簡體   English   中英

ReactJS動態更新狀態

[英]ReactJS update state dynamically

我正在嘗試根據在回調函數上發送的參數動態更新組件狀態。

因此,目標是如果組件發送valueChange('id', 1) ... this.state.contractLine.id將更新為1並且如果組件發送valueChange('innerLevel.name', 'newName') this.state.contractLine.innerLevel.name將更新為newName

這是我正在使用的代碼(但無法正常工作)。

valueChange(statePath, inputValue) {
    var newState = this.state; 

    var stateBeingChanged = this.state['contractLine'];

    var pathList = statePath.split('.');
        for (var i = 0; i < pathList.length; i++) {
            var elem = pathList[i];
            stateBeingChanged = stateBeingChanged[elem];
        }

    stateBeingChanged = inputValue;

    newState['contractLine'] = stateBeingChanged;

    this.setState(newState);
}

有任何想法嗎?

編輯-解決-

以防萬一有人遇到相同的問題...我遵循@rauliyohmc建議並設法用lodash解決了問題。 使用的代碼(比我想象的要簡單得多)是:

valueChange(statePath, inputValue) {
    var newState = Object.assign({}, this.state['contractLine']);

    _.set(newState, statePath, inputValue);

    this.setState({contractLine: newState});
}

以防萬一有人遇到相同的問題...我遵循@rauliyohmc的建議並設法用lodash解決了問題。 使用的代碼(比我想象的要簡單得多)是:

valueChange(statePath, inputValue) {
    var newState = Object.assign({}, this.state['contractLine']);

    _.set(newState, statePath, inputValue);

    this.setState({contractLine: newState});
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM