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

我可以使用状态和道具在父/子之间进行控制吗

齐兴运
2023-03-14

我正在学习React/redux-奇妙的框架,不知道JS Counl会这么酷!!!

我的问题...

我有一个父组件和一个子组件。可以通过以下方式隐藏/显示子项:

  1. 按下子对象上的按钮将其隐藏

1)可以通过使用this.state控制2)可以通过设置来自父母的道具来控制

我的问题是我不能用状态和道具来控制孩子,因为我认为它是状态或道具。

(这并不完全正确。我可以使用事件组件WillReceiveProps-这是一种方法吗?即主要使用状态,但在事件的道具和状态之间进行转换)

愿意接受其他好的建议

谢谢

__EDIT____________编辑_________编辑___________编辑___________

只需再次阅读FB文档,并猜测我的建议是推荐的方式:

componentWillReceiveProps()在装入的组件接收新的道具之前被调用。如果需要更新状态以响应道具更改(例如,重置道具),则可以进行比较。props和nextProps并使用它执行状态转换。此方法中的setState()。

共有1个答案

翁宏茂
2023-03-14

您可以将状态和函数作为道具从父对象传递给子对象。此功能可用于切换状态。您可以在父级和子级中使用此函数。

示例:

// parent
import React, { Component } from 'react';
import ChildComponent from './path/to/child';

class ParentComponent extends Component {
    constructor(props) {
        super(props);
        this.handleToggle = this.handleToggle.bind(this);
    }

    state = {
        isVisible: false;
    }

    handleToggle(current) {
        this.setState({
            isVisible: !current
        })
    }

    render(){
        <div>
            <ChildComponent handleToggle={this.handleToggle} isVisible={this.state.isVisible} />
            <button onClick={(isVisible) => this.handleToggle(this.state.isVisible)}>Toggle me</div>
        </div>
    }
}

export default ParentComponent;


// child
import React from 'react';

const ChildComponent = ({ isVisible, handleToggle }) => {
    return (
        <button onClick={(isVisible) => handleToggle(isVisible)}>Toggle me</div>
    );
}

export default ChildComponent;
 类似资料:
  • 给定一个具有受控输入的React组件,我希望能够: 设置来自父级状态的输入值 允许用户将输入更改为任意值 只有在用户提交并且输入通过验证后才更新父级的状态。 我可以用下面的代码片段完成1和2,但是由于值是通过props进入ChildComponent的,所以我不确定如何在不更改父级上myInput的值的情况下更改输入值。

  • 我实际上正在学习reactjs,并且实际上正在开发一个小的TODO列表,包装在一个名为TODO的“父组件”中。 我决定将初始化移到componentDidMount内部,但这似乎是一个反模式,我需要另一个解决方案。你能帮我吗? 下面是我的实际代码:

  • 我试图了解如何构建具有不同"页面"或"视图"的ReactJS应用程序。 我将以下组件作为我的基础应用程序,并且我正在React状态中使用currentState属性在视图中的活动组件之间切换。 它执行此任务,但在启动dataLoaded回调时,组件从不接收更新的recipes数组。 如何根据应用程序中的更新状态更新道具? 还是我处理这整件事的方式错了?

  • 在父组件中: 我有一个布尔状态: 我将其发送到子组件: 根据布尔值,我希望它呈现不同的组件。

  • 我是新手,基本上我正在尝试立即更新父组件的状态及其子组件(和)道具。当前仅更新父组件的状态。我会一步一步地解释清楚。 这里我有一个父组件 这个组件有两个对象数组(和),分别作为道具发送到和组件。接收selectedPlayer和setSseltedPlayer。两个组件都有一个组件和一个选择输入。在组件中,用户将选择一个团队,他们将显示所选团队的球员,而在组件中,将选择一个球员,他们将显示选中的玩

  • 问题内容: 更具体地说,如果计算机上有服务器(实例),我可以使用C#实例连接到该服务器吗? 问题答案: 主要问题是您需要非常小心发送和接收的数据的编码。这是一对可以协同工作的程序。C#客户端发送字符串,方法是首先发送其长度为整数,然后发送字符串本身的字节。Java服务器读取长度,然后读取消息并将输出打印到控制台。然后编写回显消息,计算其长度,提取字节并将其发送回C#客户端。客户端读取长度,消息并打