我有dataArray
个对象的列表
我想将TextInput与该列表中的特定对象相关联。
每次更改文本还必须更改dataArray
中的state
如何正确执行?下面的代码不起作用
export default class MyClass extends Component {
constructor(props) {
super(props);
this.state = {
dataArray: this.props.dataArray
};
}
_renderContent = section => {
let arrayIdx = this.state.dataArray.findIndex(
x => x.title == section.title
);
return (
<TextInput
value={this.state.dataArray[arrayIdx].content}
onChangeText={con =>
this.setState({
dataArray: update(this.state.dataArray, {
arrayIdx: { content: { $set: con } }
})
})
}
/>
);
};
render() {
return (
<Container>
<Content padder>
<Accordion
dataArray={this.state.dataArray}
renderContent={this._renderContent}
/>
</Content>
</Container>
);
}
}
答案 0 :(得分:1)
问题在于您实际上是在更新arrayIdx
而不是它所引用的索引。您需要使用[arrayIdx]
之类的Computed Property Name。
[arrayIdx]: { content: { $set: con } }