【发布时间】:2017-01-23 07:02:28
【问题描述】:
我有一个带有 name 属性和子文本的 React 元素,它们都取自 props 中的相同值。
当使用不同的 prop 值重新渲染 React 组件时,仅更新子文本,但 name 属性保持不变:
var Inner = React.createClass({
render: function () {
var name = this.props.name;
return ( <div name={name}>{name}</div> );
}
});
React.render(<Inner name="red"/>, document.getElementById('outer'));
// element is now <div name="red" data-reactid=".0">red</div>
React.render(<Inner name="green"/>, document.getElementById('outer'));
// element is now <div name="red" data-reactid=".0">green</div>
如您所见,在第二次调用React.render 之后,name 属性仍然是红色的。 (见http://jsfiddle.net/chyp9mxL/)
这个问题可以通过在渲染函数中添加key={name} 来解决,但我不明白为什么必须这样做。不是只有当我们有多个组件时才需要键吗?我们这里只有一个。
【问题讨论】:
-
我想弄清楚为什么你有两个
React.render()... -
这适用于新版本的 react 和 react-dom。因此,包括 react-dom 并调用 ReactDOM.render 而不是 React.render 应该可以做到。
-
@Chris 只是为了提供一个最简单的例子来说明问题。我想在现实生活中,第二次渲染会由一些用户操作触发。
-
@FrancoRisso 你是对的。我用 v15.3.1 尝试过,它似乎已经解决了这个问题。谢谢!
标签: reactjs