我有这段代码:
# app/assets/javascripts/components/records.js.coffee
@Records = React.createClass
...
render: ->
React.DOM.div
className: 'records'
React.DOM.h2
className: 'title'
'Records'
React.DOM.table
className: 'table table-bordered'
React.DOM.thead null,
React.DOM.tr null,
React.DOM.th null, 'Date'
React.DOM.th null, 'Title'
React.DOM.th null, 'Amount'
React.DOM.tbody null,
for record in @state.records
React.createElement Record, key: record.id, record: record
关键支柱是什么?在React的反应数据处理过程中如何处理它?</ p>
答案 0 :(得分:3)
key
帮助React跟踪从多个渲染器中的数组渲染的组件,因为它可能会更改位置或添加到数组中/从数组中删除。例如,如果您首先渲染
[record3, record2, record1]
以后再渲染
[record4, record3, record2, record1]
React将天真地销毁所有组件并在其位置实例化和呈现新组件,因为React认为record3
变为record4
,record2
变为record3
,依此类推,并且record1
被添加到最后。这会产生四个新组件,即使这些组件的shouldComponentUpdate
会返回false:
record3 -change-> record4
record2 -change-> record3
record1 -change-> record2
--add---> record1
但是,如果您通过key
属性唯一标识从每条记录呈现的组件,则React会识别出record4
已添加到开头,从而允许父级更有效地重新呈现:
--add---> record4
record3 -same- record3
record2 -same- record2
record1 -same- record1
如果子组件在某种程度上是有状态的,这一点尤其重要。
key
属性也用于React的动画系统,以确定一个组件是否与另一个组件不同(因此应该转换为或转出)。