在 React 组件之间共享 volatile 变量 [重复]

Posted

技术标签:

【中文标题】在 React 组件之间共享 volatile 变量 [重复]【英文标题】:Share volatile variable between React Components [duplicate] 【发布时间】:2020-03-14 07:59:08 【问题描述】:

我有一组组件可以呈现同一页面的不同部分。每当其中一个动作被提交时,其他动作都应该被锁定(应该通过它们传播一个 volatile 标志并触发一个禁用所有元素的 javascript 函数)

块组件:

class FirstBlock extends React.Component 
    constructor(props) 
        super(props);
        .......
        
    
    render() ......

class SecondBlock extends React.Component 
    constructor(props) 
        super(props);
        .......
        
    
    render() ......

页面组件:

import FirstBlock from 'Components/FirstBlock';
import SecondBlock from 'Components/SecondBlock';

class PageBlock extends React.Component 
    constructor(props) 
        super(props);
        .......
        
    
    render() 
        return (
            <FirstBlock ... />
            <SecondBlock ... />
        );
    

有什么想法吗?我是新手,任何提示都会有所帮助。

【问题讨论】:

如果你的组件渲染在不同的地方,你可以看看 Redux (redux.js.org),它为你提供了一种在组件之间共享状态的简洁方式。 【参考方案1】:

在(非常)一般的术语中,将事件处理程序从您的父级传递到您的每个块中。当其中一个触发动作时,请在父级中处理此问题。如果您需要根据哪个孩子提出动作来改变您的行为,您需要为每个孩子设置某种标识符,以便在调用处理程序时它知道要做什么。

class PageBlock extends React.Component 
    constructor(props) 
        super(props);
        .......
        
    
    onAction = (id)=>
       // set isVolatile or do whatever you need to do
    
    render() 
        return (
            <FirstBlock id=firstBlockId onAction=this.onAction... />
            <SecondBlock id=secondBlockId onAction=this.onAction... />
        );
    



class FirstBlock extends React.Component 
    constructor(props) 
        super(props);
        .......
        
    
    onAction = ()=>
        this.props.onAction(this.props.id)
    
    render() ......

原则是将您的公共状态(即某事已触发动作)提升到父级,以便需要了解该状态的子级可以访问它。

【讨论】:

做到了!谢谢!

以上是关于在 React 组件之间共享 volatile 变量 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

React 新手:在未链接的组件之间共享状态

在没有关系的 React 组件之间共享数据?

在项目之间共享 React 组件的最简单方法是啥? [关闭]

是否可以使用 React 中的 useState() 钩子在组件之间共享状态?

React-native flatlist 在 isLoading 上的组件之间共享道具

java内存模型值synchronized和volatile