React保存当前状态的值并使之不变

时间:2019-01-05 19:27:40

标签: reactjs

我是React的新手,考虑保存当前状态的值时遇到问题。我不确定是否可以。

总而言之,我建立了一个返回如下HTML元素的函数。想法是在每次点击时保存一个div。

createQuestion(){
        let CurrentQuestion=this.state.freetextinput;
        return this.state.values.map((el, i) => 
         <div key={i} className="QuestionBox">
            {CurrentQuestion}
         </div>          
        )
    }

freetextinput的值在每次单击时都会更改。这个想法是保存所有freetextinput的值。假设freetextinput的值是1、2、3。我想拥有所有这三个值:

1
2
3

但是,我只得到这样的东西:

3
3
3

我想知道,是否有一种方法可以保存/存储this.state.freetextinput的值,这样我就可以获取所有三个值。

3 个答案:

答案 0 :(得分:3)

新问题需要先放入数组才能被映射。这样的事情可能对您有用吗?

var savedQuestions = []

createQuestion(q){        
  savedQuestions.push(q)
  this.setState({savedQuestions: savedQuestions}, () => {
    var questionElements = this.state.savedQuestions.map((el, i) => 
     <div key={i} className="QuestionBox">
        {el}
     </div>          
    )
    })
    return questionElements
}

答案 1 :(得分:2)

将自由文本输入的每个输入保存到数组中,这样您就可以访问所有值:

您可以检查以下代码沙箱:https://codesandbox.io/s/j835121kv

答案 2 :(得分:1)

您应该直接映射concurrently \"node config/launchLocalServer.js\" \"npm run server\" \"npm run client\"

由于this.state.freetextinput是字符串,因此您首先需要使用split将其转换为数组

freetextinput

如果您的字符串看起来像createQuestion(){ return this.state.freetextinput.split(', ').map(el => <div key={el} className="QuestionBox"> {el} </div> ) } ,这将起作用 如果您的字符串是"1, 2, 3",请使用"123"代替split('')