事实上,我正在学习如何反应JS,但我不清楚家长的类方法如何能够访问孩子的类状态。我在这个主题上搜索了很多,但在面向对象编程中,父类无法访问其子类的属性(状态)。但在react js中,setState()如何访问其子级的类属性(state)。这可能是个愚蠢的问题请告诉我它是怎么发生的?
如果您想清除任何混淆,通过组件应用编程接口理解父子结构可能会有所帮助。既然你提到了类组件,让我用同样的例子来说明一个例子。
您可以通过在JSX插入中定义属性将道具从父级发送给子级-
<Child uniqueProp="Text sent to Child" />
相反,在父组件中访问子数据很棘手。你必须按照这些步骤-
范例-
父组件
class Parent extends React.Component {
constructor(props) {
super(props);
this.state = {
text: "Original Text"
}
}
handleCallback = (value) => {
this.setState({ text: value })
}
render() {
return (
<div>
<Child changeText={this.handleCallback} />
{this.state.text}
</div>
)
}
}
子组件
class Child extends React.Component {
render() {
return (
<div>
<button onClick={() => this.props.changeText("Data from child")}>
Button
</button>
</div>
)
}
}
之所以这样设置,是因为道具是通过引用传递的。如果您选择更改父对象的状态state={“something”}
而不是setState({“something”})
,则该对象也将在子组件中修改,但不会有重新渲染周期。在手动刷新之前,用户不会看到UI更改。
当您使用setState
更改父级的状态(标准做法)时,将按预期触发重新渲染周期,并且子组件将反映UI更改。
注意:请注意,功能组件的使用现在几乎是事实。在我看来,通过集成挂钩和数据存储(如Redux)使生活变得轻松。
别担心,这是一个很棒的问题。
道具是通过引用传递的!
这里有一些来自StackOverflow帖子的很好的答案,可以更具体地回答你的问题。
在reactjs中,道具是按值传递还是按引用传递?
我认为我可以提供的一些潜在的细微差别是,反应强调组合而不是继承。您应该将其视为由子组件组成的父组件。虽然子组件有权访问父状态,但它们不会继承父状态。
我在ReactJS中得到了一个子类和一个父类。我想让我的孩子访问父级的状态,这是每毫秒更新一次。孩子也应该有可能接触到一些父母的方法。 在另一个类中,我正在初始化一个子对象并对其调用Function startManager()。但随后我收到一条错误消息,说无法读取未定义的属性“start”。我是一个新的反应者,我认为我在定义孩子的属性时犯了一些错误。有人知道我做错了什么吗。谢谢
null 从我的类中调用这些代码的工作方式与我预期的一样。但是,我想在Kotlin子类之外调用其中的一个方法。 如果从不同的Kotlin类尝试,则会出现以下编译错误: 未解析得引用:completeWakefulIntent
我有两个不同包的亲子班。我正在重写受保护类型的方法。我想访问子类中的超类保护方法。 考虑以下代码: 认为我是Java新手,并在main方法中提供替代comment的答案。
问题内容: 假设我正在构建一个井字游戏(因为它与结构非常相似),我希望结果在弹出窗口中显示,并带有一个新的游戏按钮,并且希望此弹出窗口允许我访问设置(另一个按钮)并对其进行更改,使其始终位于弹出窗口中,然后离开并最终将其关闭并开始新游戏。 我希望我可以保持秩序,因此有一个单独的弹出窗口类,可以在其中构建自定义弹出窗口。 显而易见,我将newgame方法和reset方法作为我的游戏网格类的方法。另一
我还没有反应过来,现在我的状态中有了这些信息(如图所示),我如何才能访问消息:? 我尝试了和,但似乎两者都不对,有人能告诉我如何访问消息吗?非常感谢。 //////////////////////////////////////////// 嗨,克里斯,非常感谢你的回答。 您是对的,错误对象是从API返回的,我已经将其添加到状态。 我也试过 this.set状态({错误: errorObjFrom
我正在开发一个计算圆形和方形(类)面积的小练习java程序,该程序实现了surface(接口),它有一个名为area()的方法。我需要实现一个名为SumArea的类,该类有一个名为Calcrea()的通用方法,该方法接收Circle circ[]和Square Square[]数组,并执行面积计算 程序结构: - urface.java quare.java 圆圈java rea.java 我怀疑