在React中变异道具

时间:2015-03-31 13:11:39

标签: javascript reactjs

我有一个React组件,它通过props接收一个或多个对象。我想做的事情就是重新订购这些道具。但是,似乎React重新渲染仅在state更改时发生。

现在我在父对象中处理了排序并传递方法来处理作为prop的排序,但理想情况下我希望负责渲染这些对象的组件也处理排序。

props归入state似乎很糟糕,但在这里做的最好的事情是什么?

2 个答案:

答案 0 :(得分:8)

道具是不可变的,但在您的情况下,您的数据似乎没有变化,只有排序顺序发生变化,因此您可以:

  • 将您的数据和排序功能保留为道具
  • 将您的排序顺序存储在州
  • 可能使用getInitialState返回默认排序顺序
  • 当更改排序顺序时,设置状态以便重新呈现

答案 1 :(得分:1)

据我了解,React需要更改状态以触发渲染。如果要保持排序逻辑附加到组件,则必须创建数组的副本。

getInitialState: function () {
    return {
        items: this.props.items.slice(0)
    };
},

已实施here.