我有一段文字,每次点击它时,文字都会变为对象中的下一个项目。我还需要一个说文本的名字,所以我使用了这样的多维数组:
let texts = {
0:{
"name" : "Bob",
"text" : "Hello, this is a text",
},
1:{
"name" : "Peter",
"text" : "Hey there.",
},
};
这是我的状态:
this.state = {
textNumber: 0,
};
这就是我在onPress上调用的函数:
nextScene = () => {
if(this.state.textNumber >= Object.keys(texts).length-1){
}
else{
this.setState({textNumber: this.state.textNumber+1})
}
};
它完全按照我想要的方式工作。但我的问题是:这是应该在React Native中完成的吗?或者有更好的方法吗?
答案 0 :(得分:1)
你可能想要一个对象数组:
let texts = [
{
"name" : "Bob",
"text" : "Hello, this is a text",
},
{
"name" : "Peter",
"text" : "Hey there.",
},
];
然后你可以这样做:
if(this.state.textNumber < this.state.texts.length-1) {
this.setState({textNumber: this.state.textNumber+1});
}
如果您想要循环,还可以执行以下操作:
this.setState({textNumber: this.state.textNumber+1 % this.state.texts.length});
关于您的问题,在React Native中执行此操作之间没有区别。这只是JS。
保持状态(React或RN)都可以。如果您想要更精彩的解决方案,可以编写HOC
来管理组件的状态(例如参见recompose)。