【问题标题】:Update TextInput value of hash of array in onChangeText function更新 onChangeText 函数中数组哈希的 TextInput 值
【发布时间】:2018-06-03 22:36:39
【问题描述】:
  constructor(props) {
   super(props);
    this.state = {
     answers: props.element.answers_data.map((answer, index) => {
     return answer;
    }
  })

     <TextInput
      value = {this.state.answers[index].answer_text}
     onChangeText={(answer_text) => {
              this.setState({
                answers: [
                    ...this.state.answers.slice(0, index),
                    {answer: {answer_text}},
                    ...this.state.answers.slice(index + 1, 
                    this.state.answers.length)
                ]
              });
            }} 
       />

我的答案数据结构是 like= 0: {id: 799, answer_text: "helloas fast" percent: 0}

我想更新答案文本并将其存储在 this.state.answers 中,但是当我在 textinput 上编写文本并更新它时,我只得到哈希中的 answer_text 并且我想要所有 id、answer_text、哈希中的百分比。 所以,请我需要建议。

提前致谢。

【问题讨论】:

    标签: javascript arrays reactjs react-native textinput


    【解决方案1】:

    您没有很好地处理数组数据。您可以保留其结构,也可以使用answers_data.map 将它们转换为字符串。

    选项一的完整代码:

    constructor(props) {
      super(props);
      this.state = {
        answers: props.element.answers_data.map((answer, index) => {
          return { ...answer };
        })
      }
    }
    
    <TextInput
      value = {this.state.answers[index].answer_text}
      onChangeText={(answer_text) => {
              this.setState({
                answers: [
                    ...this.state.answers.slice(0, index),
                    { ...this.state.answers[index], answer_text },
                    ...this.state.answers.slice(index + 1, this.state.answers.length)
                ]
              });
            }} 
     />
    

    选项二的完整代码:

    constructor(props) {
      super(props);
      this.state = {
        answers: props.element.answers_data.map((answer, index) => {
          return answer.answer_text;
        })
      }
    }
    
    <TextInput
      value = {this.state.answers[index]}
      onChangeText={(answer_text) => {
              this.setState({
                answers: [
                    ...this.state.answers.slice(0, index),
                    answer_text,
                    ...this.state.answers.slice(index + 1, this.state.answers.length)
                ]
              });
            }} 
     />
    

    【讨论】:

    • 我的答案结构是这样的 = 0: {id: 777, answer_text: "hello", percent: 0} 2:{id: 776, answer_text: "gb", percent: 0} 和当我写 answer_text 时,它只给我 answer_text 但我想要这个 {id: 776, answer_text: "gb", percent: 0} 整个结构。请建议我可以在那里写什么来在一个对象中获得这 3 个值
    • 修改了我的答案,以更改您的代码的两种可能性。检查哪一个对您来说更具可读性。随时在这里提问。
    • 非常感谢您的回复@val.. 它的工作
    猜你喜欢
    • 2019-05-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2014-05-11
    相关资源
    最近更新 更多