javascript - reactjs-如何在没有参考的情况下将状态元素传递给孩子?
问题描述
在上面的代码中,如果 体现在。x
如何传递一个父组件(ie )状态的元素,使得父组件的状态变化不会影响到子组件(ie )?control
display
control
display
class Display extends React.Component{
render()
{
return( <button>{this.props.x}</button> );
}
}
class Control extends React.Component{
state={
x:'Hello'
}
render()
{
const {x}=this.state;
return( <Display x={x}/> );
}
}
解决方案
这是一个例子。您可以将 prop 值分配给 componentDidMount 中的“实例”变量。ComponentDidMount 只会在Display
第一次挂载时运行一次。在下面的示例中,它将分配this.props.x
to的值this.x
。使用this.something
创建一个“实例”变量,该变量将在Display
. 当 this.props.x 更改时,它不会被更新/更改(假设 x 是一个原始值,如字符串或数字)。如果你改变它的值,this.x
它不会导致重新渲染Display
。
class Display extends React.Component{
componentDidMount() {
this.x = this.props.x;
}
render()
{
return( <button>{this.x}</button> );
}
}
class Control extends React.Component{
state={
x:'Hello'
}
render()
{
const {x}=this.state;
return( <Display x={x}/> );
}
}
推荐阅读
- bulletphysics - 为什么禁用世界重力对移动刚体没有影响?
- bash - 使用 Bash 输出日期格式
- python - 从列表中切片字符串时无法使用此条件 [python]
- asp.net - Azure ASP.NET REST API 和数据库部署
- r - ggplot2 使用列值作为图例
- mongodb - 如何有效地循环遍历 MongoDB 集合以更新序列列?
- amazon-web-services - AWS Amplify: AmplifyException 'You are not authorized to make this call.'
- python - NumPy fast iteration trough image
- python-3.x - Visual studio code Python execution
- r - R studio:分解/旋转数据框以计算每个组在不同时间段的每个变量的平均值