Reactjs React简介教程:如何列出';s的钥匙有价值吗?
我没有使用js的经验,建议在使用React Native之前先学习React。我的问题来自于源代码 在本教程中,我们制作了一个名为Reactjs React简介教程:如何列出';s的钥匙有价值吗?,reactjs,Reactjs,我没有使用js的经验,建议在使用React Native之前先学习React。我的问题来自于源代码 在本教程中,我们制作了一个名为history的列表,其键为move class Game extends React.Component { constructor() { super(); this.state = { history: [{ squares: Array(9).fill(null) }], xIsNext
history
的列表,其键为move
class Game extends React.Component {
constructor() {
super();
this.state = {
history: [{
squares: Array(9).fill(null)
}],
xIsNext: true,
stepNumber: 0,
};
}
[...]
render() {
[...]
const moves = history.map((step, move) => {
const desc = move ?
'Move #' + move :
'Game start';
return (
<li key={move}>
<a href="#" onClick={() => this.jumpTo(move)}>{desc}</a>
</li>
);
});
[...]
类游戏扩展React.Component{
构造函数(){
超级();
此.state={
历史:[{
正方形:数组(9)。填充(空)
}],
下一个:是的,
步骤编号:0,
};
}
[...]
render(){
[...]
常量移动=历史。映射((步骤,移动)=>{
const desc=移动?
“移动”#+移动:
“比赛开始”;
返回(
);
});
[...]
对这一部分的解释是错误的
[…]React要求您在列表中的每个元素上指定一个键属性,一个字符串以区分每个组件及其同级。在这种情况下,alexa、ben、claudia可能是合理的键;如果项目对应于数据库中的对象,则数据库ID通常是一个不错的选择:
{user.name}:{user.taskCount}剩余任务
强烈建议您在构建动态列表时分配适当的密钥。如果您没有合适的密钥,您可能需要考虑重构数据,这样就可以了。[…]如果您不指定任何键,则反应将警告您,并返回使用数组索引作为键。
现在我感到困惑的是,上面的history
上的move
是什么?我看不到任何暗示move
被赋值的东西,但是当它被打印时,它会显示列表索引?为什么会这样?列表是通过使用映射方法来“映射”历史数组来创建的。映射将为列表中的每个元素调用一个函数数组;此回调函数的第二个参数是数组中元素的索引
在代码中,回调函数如下所示:
(step, move) => {
const desc = move ?
'Move #' + move :
'Game start';
return (
<li key={move}>
<a href="#" onClick={() => this.jumpTo(move)}>{desc}</a>
</li>
);
}
(步骤,移动)=>{
const desc=移动?
“移动”#+移动:
“比赛开始”;
返回(
);
}
因此,数组的索引,即第二个参数,被称为move(您可以将其称为任何名称);然后将其值呈现为每个列表项的键属性
我在学习一个严重依赖于JS的框架之前,会强烈地考虑学习JS。所以……是<当前值?但是没有使用?NVM我终于明白了。非常感谢你的解释,并链接了一个很大的帮助!
(step, move) => {
const desc = move ?
'Move #' + move :
'Game start';
return (
<li key={move}>
<a href="#" onClick={() => this.jumpTo(move)}>{desc}</a>
</li>
);
}