在 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 默认排序顺序
  • 更改排序顺序时,会设置状态以便重新渲染