我在我的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')
}
...
}
答案 0 :(得分:1)
ES6中的动态键Javascript通常用变量表示,该变量存储要更改的键的值。所以在你的情况下你会想做:
setState({ [storeKey]: response });
答案 1 :(得分:0)
您可以这样做:
this.setState(function(prevState){
prevState[storeKey] = response;
return prevState;
}))
或使用带有ES6的动态键
setState({ [storeKey]: response });