如何在子组件中访问根组件的状态值

Posted

技术标签:

【中文标题】如何在子组件中访问根组件的状态值【英文标题】:how to access value of state of Root Component in the child component 【发布时间】:2019-01-17 06:34:16 【问题描述】:

我创建了一个 React 应用程序。在这个应用程序中,我创建了以下组件:

应用组件(根):数据加载到状态的位置 CardList 组件:卡片列表,数据通过 props 传递给它 Card 组件:使用 forEach 向 Card 传递数据,它有按钮 CustomButton 组件:就像一个带有样式的按钮

我想要的是当用户点击任何卡片上的按钮时,每次都应该增加一个数字。但我无法在此处访问数据。

谁能帮忙?

这是供您参考的卡片组件:

class Card extends Component 

render() 
    return (
        <div className="tc bg-light-green dib br3 pa3 ma2 grow bw2 shadow-5">
            <h2>Votes: this.props.votes</h2>
            <div>
                <img src=this.props.pic alt='Superstar'/>
                <div>
                    <h2>this.props.name</h2>
                    <p>this.props.email</p>
                </div>
            </div>
            <ActionButton btnText="Vote Now!" clickhandler=this.onVoteButtonClick/>
        </div>
    );

onVoteButtonClick = (event) => 
    console.log('It was clicked : '+this.props.id);      

【问题讨论】:

如果您不想通过三个组件中的道具向下传递函数,您可以使用context。 【参考方案1】:

您应该更多地研究两个选项,以了解最适合您需要的选项:

    Redux(或类似的) React 16 中提供了新的 Context API。

这两种解决方案的要点是,您可以独立于依赖的组件树来管理应用程序状态。 Context API 可以说更容易实现,而您目前会发现更多解释 Redux 方法的示例,因为它仍然是目前最常见的解决方案。

【讨论】:

以上是关于如何在子组件中访问根组件的状态值的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS中从父组件调用子函数时如何在子组件中设置状态

如何在子列表的插槽内分配组件

如何在子组件可以访问的上下文中创建方法?

如何在子组件的构造函数中等待父组件的props

如何仅在子组件中使用 vue-router?

react-native 如何在子组件中获取父组件背景颜色