更新对象列表中的特定属性

时间:2018-10-01 13:30:47

标签: javascript reactjs react-native

我有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>
    );
  }
}

1 个答案:

答案 0 :(得分:1)

问题在于您实际上是在更新arrayIdx而不是它所引用的索引。您需要使用[arrayIdx]之类的Computed Property Name

[arrayIdx]: { content: { $set: con } }