javascript - 当我的状态改变时,我的 ReactJS 初始状态也会改变

标签 javascript reactjs frontend state react-state-management

我有这样的东西:

const initialState={
 hide: true
 product:[
         {name: ''
          price: ''},
          {name: ''
          price: ''},
          {name: ''
          price: ''},
         ]
}

class Products extends Component {
  state = { ...initialState }

}
clearState = () =>{
  this.setState({...initialState})
}

我想通过使用initialState对象清除状态,但是当我尝试这样做时什么也没有发生。我注意到我的初始状态与我的状态采用相同的值,因此,当我执行其他函数来编辑状态时,我的初始状态也会发生变化。

有什么建议吗? 顺便谢谢了

最佳答案

您的初始状态仍然存储对数组的引用,这意味着如果您在其他任何地方更改数组,它会随处更改。

为了解决这个问题,您可以使用一个函数来创建一个新的初始状态供您使用,如下所示:

const initialState = () => {
    return {
        hide: true,
        product: [
            {name: '', price: ''},
            {name: '', price: ''},
            {name: '', price: ''},
        ]
    };
};

class Products extends Component {
    state = initialState();

    clearState = () =>{
        this.setState(initialState());
    }
}

关于javascript - 当我的状态改变时,我的 ReactJS 初始状态也会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59923059/

相关文章:

javascript - 在 ember-cli 中对数组模型进行排序

二郎前端

javascript - Angular js + Rails 好主意吗?

javascript - 任何 backbone.js 书籍可用吗?

javascript - 在 JavaScript 中将 Unicode 解码为字符

javascript - 功能:根据字符串中是否存在子字符串返回 True/False

node.js - Node 和浏览器中的 Webpack 外部

reactjs - react native Firebase 消息传递点击通知

javascript - 如何循环比较json对象中的元素并只显示div中的变化?

reactjs - 发送 Action 后的 Redux Thunk 回调?