在 React 中改变道具
Mutating props in React
我有一个 React 组件,它通过 props
接收数组或对象。我想做的是让一个事件重新排序这些道具。但是,似乎 React 重新渲染仅在 state
更改时发生。
现在我在父对象中处理了排序并将处理排序的方法作为道具传递,但理想情况下我希望负责渲染这些对象的组件也处理排序。
将 props
塞进 state
似乎很糟糕,但在这里最好的做法是什么?
据我了解,React 需要更改状态才能触发渲染。如果你想保持排序逻辑附加到你的组件,你必须创建数组的副本。
getInitialState: function () {
return {
items: this.props.items.slice(0)
};
},
已实施here.
道具是不可变的,但在你的情况下,你的数据似乎没有改变,只有排序顺序改变了,所以你可以:
- 将您的数据和排序函数作为 props
- 在状态中存储您的排序顺序
- 可以使用
getInitialState
到 return 默认排序顺序
- 更改排序顺序时,会设置状态以便重新渲染
我有一个 React 组件,它通过 props
接收数组或对象。我想做的是让一个事件重新排序这些道具。但是,似乎 React 重新渲染仅在 state
更改时发生。
现在我在父对象中处理了排序并将处理排序的方法作为道具传递,但理想情况下我希望负责渲染这些对象的组件也处理排序。
将 props
塞进 state
似乎很糟糕,但在这里最好的做法是什么?
据我了解,React 需要更改状态才能触发渲染。如果你想保持排序逻辑附加到你的组件,你必须创建数组的副本。
getInitialState: function () {
return {
items: this.props.items.slice(0)
};
},
已实施here.
道具是不可变的,但在你的情况下,你的数据似乎没有改变,只有排序顺序改变了,所以你可以:
- 将您的数据和排序函数作为 props
- 在状态中存储您的排序顺序
- 可以使用
getInitialState
到 return 默认排序顺序 - 更改排序顺序时,会设置状态以便重新渲染