Reactjs 对属性如何工作的误解
我试图理解reactJS中的属性是如何工作的,并试图完成一个tic-tac-toe游戏来帮助我完成这个任务。下面是一段让我困惑的代码:Reactjs 对属性如何工作的误解,reactjs,Reactjs,我试图理解reactJS中的属性是如何工作的,并试图完成一个tic-tac-toe游戏来帮助我完成这个任务。下面是一段让我困惑的代码: class Board extends React.Component { renderSquare(i) { return <Square value={i} />; } render() { const status = 'Next player: X'; return ( <di
class Board extends React.Component
{
renderSquare(i)
{
return <Square value={i} />;
}
render() {
const status = 'Next player: X';
return (
<div>
<div className="status">{status}</div>
<div className="board-row">
{this.renderSquare(0)}
{this.renderSquare(1)}
{this.renderSquare(2)}
</div>
<div className="board-row">
{this.renderSquare(3)}
{this.renderSquare(4)}
{this.renderSquare(5)}
</div>
<div className="board-row">
{this.renderSquare(6)}
{this.renderSquare(7)}
{this.renderSquare(8)}
</div>
</div>
);
}
}
class Square extends React.Component
{
render() {
return (
<button className="square">
{this.props.value}
</button>
);
}
}
类板扩展React.Component
{
renderSquare(一)
{
返回;
}
render(){
常量状态='下一个玩家:X';
返回(
{状态}
{this.renderSquare(0)}
{this.renderSquare(1)}
{this.renderSquare(2)}
{this.renderSquare(3)}
{this.renderSquare(4)}
{this.renderSquare(5)}
{this.renderSquare(6)}
{this.renderSquare(7)}
{this.renderSquare(8)}
);
}
}
类Square扩展了React.Component
{
render(){
返回(
{this.props.value}
);
}
}
我不明白的是:父组件board返回值为I的子组件square。那么Board如何将属性传递给子类square呢?我是一个彻头彻尾的noob,所以我可能在某个地方完全错误地理解了这一点。此函数返回一个JSX表达式,其中包含一个方形组件,该组件接受一个名为value的属性,该属性的值为I
renderSquare(i)
{
return <Square value={i} />;
}
在这种情况下,在Square组件内部,在代码的某些部分中,可能在名为calculateArea的函数内部,甚至在相同的渲染方法中,使用名为value的属性,如下所示:
const { nameOfTheProp } = this.props;
render() {
const { value } = this.props;
return (
<canvas
id="mySquare"
width={value * 50}
height={value * 50}
style={{ border: "1px solid #d3d3d3" }}
>
Your browser does not support the HTML5 canvas tag.
</canvas>
);
}
render(){
const{value}=this.props;
返回(
您的浏览器不支持HTML5画布标记。
);
}
然后,如果您在板上使用渲染方法传递给renderSquare(i=1),则square将
接收它并渲染宽度和高度为1*50的画布。它将在代码中显示
使用名为value
的属性,将值i
传递到生成方形组件的函数中。如果您想正确理解React,请访问React网站并学习他们的教程,这非常好,值得您花半个小时到一个小时来深入了解每件事情的工作原理。编码,你会很高兴你这么做的。不,不是。函数没有子组件。相反,该函数构建一个组件(而不是子组件,只是“组件”)。在这种情况下,
将Square的属性值设置为某个值,并且该组件可以使用this.props.propertyname
访问任何组件上的任何属性集。因此,因为您正在创建
,所以方形组件可以通过自己代码中的this.props.value
访问value
属性。你可以在Square的render()
函数的代码中看到它在做什么。@Mike'Pomax'Kamermans我的大脑没有正确地看待它。我想我现在明白了。return语句调用“render square”函数9次,以便为行中的每个正方形指定一个值,对吗。电路板的渲染
最终生成九个正方形
组件。当函数返回此值时,关键字“this”指的是什么。renderSquare(0)?这是指元件板还是元件正方形?我不知道如果直到函数本身被调用才创建square,那么它将如何引用square。我不知道的是props是如何从父组件传递到子组件的。例如,Square类如何与Board类建立连接?这个.props.value是如何工作的?没有要传递给值变量的函数。“this”关键字如何知道引用什么?请像下面这样思考。您有一个具有子节点(在父节点内渲染的子节点/组件)的父节点。因此,当Board在其渲染方法中渲染组件方形时,会建立连接,并且在该连接中创建道具,您可以通过手动发送,在这种情况下,也可以使用高阶组件,如connect from Redux with MapStateTops()。