当前位置: 首页 > 知识库问答 >
问题:

如何从React中的另一个组件设置一个组件的状态

漆雕和雅
2023-03-14

假设我有以下名为Home的组件:

this.state = {
    posts: []
}
componentDidMount() {
    ... data is fetched from api
}

<div
    <PostForm />
    {this.state.posts.map(post => (
     <Post key={post.id} post={post} />
    ))}
</div>

在PostForm组件与新Post一起提交后,我将如何更新主状态,或者如何从api重新获取数据

共有1个答案

卫景明
2023-03-14

欢迎来到SO!

从子级设置父级状态:

如果您希望您的子组件能够访问父组件的状态,只需在父类中传递setState()作为道具,就像这样...

<PostForm
    setParentState={(state) => this.setState(state)}
/>

然后,稍后在PostForm中。js,只需像这样设置父状态。。。。

this.props.setParentState(newParentStateObject);

或者,你甚至可以做。。。。

<PostForm
    postform={this}
/>

稍后,您可以使用调用postform中的任何内容。道具。postform。anyFunctionEver()

从父级设置子状态:

假设您现在想做相反的事情:从父组件更新子组件的状态?这也很简单,在定义时设置一个引用

<PostForm
    ref={(instance) => {this.postform = instance}}
/>

然后您可以直接在父类中设置postform的状态...

this.postform.setState(newChildStateObject);

状态可能会发生很多事情,所以如果您不确定,请尝试制作一个testFunc(){console.log('test');},然后尝试在父级和子级之间传递/激活它。

 类似资料:
  • 我在将状态从孩子发送到家长方面遇到了问题。点击主组件中的菜单后,我想改变状态active并将此active发送到侧边栏组件,因为我想隐藏/显示侧边栏取决于CSS中的active类。在Vanilla JS中很容易,但在React中我有点困惑。 主: 菜单: 侧栏: 应用程序JS

  • 我刚刚从反应类过来,开始思考钩子和功能组件。我有一段加载地图脚本的代码 我需要从下面的函数中设置状态或更新状态,但它不是保持状态的主函数 下面的主要功能是加载中的映射脚本。 如何使用这种方式更新状态,即从另一个函数更新状态

  • 我试图找出如何通知另一个组件状态更改。假设我有3个组件——pp.jsx、Header.jsx和SidebarPush.jsx我只是想用onclicka切换一个类。 因此,标题。jsx文件将有2个按钮,点击时将切换状态为真或假。另外两个组件是应用程序。jsx和Header。jsx需要了解这些状态的变化,以便在这些状态发生变化时可以切换类。

  • 问题内容: 我有一个包含一个按钮的标题组件,并且我希望该按钮在单击时显示另一个组件(模式页面)。 我可以做这样的事情: 这是我的标头组件: 这是我的模态页面组件,单击其他组件上的按钮时应显示该组件页面: 用于模态的库:https : //github.com/marcio/react-skylight 问题答案: 更像这样: 确保在子组件上公开一个方法: 基本上,这是在将SkyLight的方法包装

  • 问题内容: 这是我制作的屏幕,我在该屏幕上导入了三个文件,这些文件将在单击单选按钮时显示。另外还有一个相关的移动屏幕,例如,我现在导入了,如您看到的BigText,它包含表格,现在我想在BigTextMobile组件中打印其输入值 问题答案: 为了简化解决方案,您可以执行以下操作: 然后,在 BigText 组件中,您可以通过此回调添加一些数据,如下所示: 并将数据从状态传输到您的 BigText

  • 我有一个产品组件,我希望将其图片传递给另一个组件,我的图片从Rails后端上传,并映射产品详细信息。我想实现的是,当您单击按钮时,您的产品图片将显示在设计页面中进行自定义设计。 设计页面当您单击设计我按钮时,根据产品,该产品的图片应该出现在设计页面中 陈列