gpt4 book ai didi

reactjs - 使用react.js更新表会导致错误的行顺序

转载 作者:行者123 更新时间:2023-12-01 23:15:54 24 4
gpt4 key购买 nike

我有一个表,其中包含许多生成的行(来自 Prop 值),然后在底部有一个静态行,当我进行更改 Prop 值以添加另一个值的更新时,我的静态最后一行是不再是浏览器中的最后一行,就像 DOM 不同认为我的静态行来自集合(我尝试将 key={"foo"} 添加到静态行,但这并没有帮助)。

下面是一个示例,说明当您单击“添加”时,结果表是 1,2,3,add,4,而不是 1,2,3,4,add。

<!DOCTYPE html>
<html lang="en">
<head>
<script src="http://fb.me/react-with-addons-0.12.2.js"></script>
<script src="http://fb.me/JSXTransformer-0.12.2.js"></script>
</head>
<body>
<div id="content">
</div>
<script type="text/jsx">

var Table = React.createClass({
render: function() {
var r = this.props.values.map(function(v) {
return (<tr key={v}><td>{v}</td></tr>);
});
return (
<table>
{r}
<tr><td>Last Row</td></tr>
</table>
);
}
});

var TableContainer = React.createClass({
getInitialState: function() {
return { values: ["1","2","3"]}
},
addValue: function() {
this.setState({values: ["1","2","3","4"]});
},
render: function() {
return (
<div>
<Table values={this.state.values} />
<button onClick={this.addValue}>add</button>
</div>
);
}
});

React.render(
<TableContainer />,
document.getElementById("content")
);
</script>
</div>
</body>
</html>

最佳答案

当你渲染<table>时使用 React 你必须记住添加 <tbody> (如有必要,<thead>)。所有浏览器都会自动将它们添加到其 DOM 节点,但这会在 React Virtual DOM 中造成困惑。

您需要更改的是:

var Table = React.createClass({
render: function() {

var r = this.props.values.map(function(v) {
return (<tr key={v}><td>{v}</td></tr>);
});
return (
<table>
<tbody>
{r}
<tr><td>Last Row</td></tr>
</tbody>
</table>
);
}
});

关于reactjs - 使用react.js更新表会导致错误的行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27973346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com