Reactjs设置状态动态密钥Javascript

时间:2017-05-03 21:51:31

标签: javascript arrays reactjs dynamic

我在我的reactjs代码中遇到了这个问题,但更多的是我理解javascript键/值数组如何工作的问题。我如何允许在下面的示例中动态传入密钥?

问题的细节在done()函数中。任何语法错误都是因为我在Intranet上工作并且必须手动输入所有内容。正如在done()函数中所指出的,如果我对密钥进行硬编码,一切都有效,但当然我并不想要。我已尝试使用和不使用引号围绕密钥。

  class Container extends React.Component {
      constructor(props){
        super(props)
        this.state = { 'abc': {}
        }

        this.retrieveDataFromTo = this.retrieveDataFromTo.bind(this)
      }

      retrieveDataFromTo(url, storeKey){
        $.ajax({
          method: 'GET',
          url:url,
          dataType: 'json'
        })
        .done(response => {
          this.setState({storeKey: response})
          //everything works if i do this instead of the above line...
          //this.setState({'abc': response})
          //which proves the only problem is the storeKey being "dynamic"
          //so how do i get the store key to work "dynamically" here?
         })
        .fail(ajaxError)
      }

      componentDidMount(){
        this.retreiveDataFromTo('abc/getData', 'abc')
      }

      ...

    }

2 个答案:

答案 0 :(得分:1)

ES6中的动态键Javascript通常用变量表示,该变量存储要更改的键的值。所以在你的情况下你会想做:

setState({ [storeKey]: response });

More on dynamic keys in JS

答案 1 :(得分:0)

您可以这样做:

this.setState(function(prevState){
  prevState[storeKey] = response;
  return prevState;
}))

或使用带有ES6的动态键

setState({ [storeKey]: response });