Zen*_*aro 1 javascript react-native react-navigation
由于其松散的语法,我对javascript非常弱,但非常惩罚特殊字符的含义.
在react-native-navigation 教程中有这个片段
static navigationOptions = ({ navigation }) => {
const {state, setParams} = navigation;
const isInfo = state.params.mode === 'info';
const {user} = state.params;
return {
title: isInfo ? `${user}'s Contact Info` : `Chat with
${state.params.user}`,
headerRight: (
<Button
title={isInfo ? 'Done' : `${user}'s info`}
onPress={() => setParams({ mode: isInfo ? 'none' : 'info'})}
/>
),
};
};
Run Code Online (Sandbox Code Playgroud)
最初,我错误地输入第三行:
const {isInfo} = state.params.mode === 'info';
我的代码不起作用.
有什么区别:
const isInfo = state.params.mode === 'info';
从下一行开始,就有大括号缠绕 {user}
这对我来说非常混乱,但谷歌这些小事很难说,所以抱歉并提前感谢!
sou*_*rri 10
像你提到的基本上花括号是javascript中的对象.
所以在javascript中制作这样的东西
const user = {
name: 'bob',
age: 23,
};
Run Code Online (Sandbox Code Playgroud)
正在制作一个你可以使用的用户对象:user.name将返回bob.
使用ES6,您可以从其他对象制作对象.
const {user} = state.params;
//user will be state.params.user
Run Code Online (Sandbox Code Playgroud)
以上基本上是将user对象的属性拉state.params入新变量.他们真正做的就是做到这一点,所以你不必state.params.user每次都写,而你可以写user.
使用上述技术可以做一些其他很酷的事情.您可以将数组和对象"合并"到新的常量中,这非常酷.
const test = {
...user,
anotherProperty: 'value',
};
Run Code Online (Sandbox Code Playgroud)
使用react和redux(如果你正在使用它),你会看到很多这样的东西:Object.assign({}, state, {});用于创建一个新对象,其中状态的先前属性被新状态覆盖(因为redux需要一个新对象).这与使用相同{...state, ...newState}.
请有人提醒我这个...Object方法叫什么?
此行const isInfo = state.params.mode === 'info';是声明bool的简写.isInfo将是真还是假,取决于是否state.params.mode === 'info'.
将上述内容翻译成C++
if (state.params.mode === 'info') {
bool isInfo = true;
else {
bool isInfo = false;
}
Run Code Online (Sandbox Code Playgroud)
我不记得在C++中是否存在与JavaScript类似的Object数组,将JavaScript中的对象视为具有已定义键的数组.这样,上面{...state, ...newState}就像键的'覆盖'.所以
int y = [1,2,3];
int x = [3,2,1];
for (i=0;i<=2;i++) {
y[i] = x[i];
}
Run Code Online (Sandbox Code Playgroud)
我认为有类似的东西吗?
| 归档时间: |
|
| 查看次数: |
1345 次 |
| 最近记录: |