【问题标题】:How to update redux store when calling a push method调用推送方法时如何更新redux store
【发布时间】:2020-12-06 03:24:40
【问题描述】:

我正在使用 FieldArray ,我的要求是添加最多 3 个元素,我为此使用 push 方法。我有一个 redux 变量/属性来检查元素是否已达到 3。但是当我推送一个元素时如何实现存储变量的更改(将一个元素推入数组应该会增加该属性值。

 {fields.map((doc, index) => (
                            <div>
                                <h4>Element #{index + 1}</h4>
                                <br/>
                                <div className="row">
                                    &nbsp;&nbsp; {fields.length < 3 &&
                                        <button type="button"  className="btn btn-primary" onClick= 
                                        {() => fields.push({})}>
                                            Add Element
                                        </button>
                              </div>
                       </div>))}

任何指针都会有所帮助,谢谢。

【问题讨论】:

  • .push 改变数组。 React 和 Redux 使用不可变数据,所以当你改变数组时,Redux 不知道,所以 React 不知道,所以它不会被重新渲染。

标签: javascript arrays reactjs redux


【解决方案1】:

更新 redux 存储的唯一方法是调度操作。在这里,当您单击按钮时,您只需执行一个更新当前字段数组的函数。

第二点,在使用 React 和 Redux 时,您需要通过传递一个新对象来不变地修改您的状态,而不是更改它。例如:

state = {
  cars: []
}

const newState = {
  ...state,
  cars: ['Ferrari']
}

【讨论】:

  • 你好 Dan,在 Emile 的输入下..我已经删除了 push 方法以在 FieldArray 中添加元素并使用 redux 方式来调度操作。现在我可以看到,在商店中,我在 FieldArray 中添加了元素,但它们没有显示在屏幕上。请检查这个,stackoverflow.com/questions/63446531/…。如果您可以在 FieldArray 上提供任何有用的输入,我已经发布了一个关于此的新问题。谢谢。
猜你喜欢
  • 2020-08-10
  • 2019-02-16
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
相关资源
最近更新 更多