React 组件 A 通知组件 B 更新视图

发布于 2022-09-04 01:14:59 字数 258 浏览 11 评论 0

现在有两个组件 A 和 B

这两个组件的内容是完全相同的, A 里面是我喜欢的, B 里面是我不喜欢的

由于内容,结构相同,我共用一个组件写的.但是内容是互斥的

A 组件中选中了 a 那么在 B 组件中就不能选择 a

在组件中可以点击状态为 0 选中状态为 1 不可点击状态为 2

现在我选中了 A 中的 a 也将 B 中的 a 设置成了 2,但是 B 组件并不知道这时候需要更新来显示 B 中的 a 是不可点击的,能实现么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

饭团 2022-09-11 01:14:59

这样的效果肯定是能实现的,首先如果不使用redux的话你定义两个组件A和B,后可以再定义一个父级P的组件来封装A和B,这样在P中给它一个状态

class P extends React.Component {
    constructro(props) {
        super(props);
        this.state = {
            value: 0
        }
    }
    onChangeValue(value) {
        //这里写当state中的value改变时对应如何处理
    }
    
    render()//方法
}

接着你可以把P中的value传递到A和B组件中,这样传递

<A value=this.state.value onChangeCallback=onChangeValue/>,

<B value=this.state.value/>

接着你在A中如果value改变就调用this.props.onChangeCallback(newValue)方法通知父级组件value改变了,
然后在B中使用componentWillReceiveProps(nextProps)函数当父级的value改变时就执行对应的方法对B中的状态进行改变设置,说得比较不系统,你可以看一看我写的文章,里面有讲

我的文章:https://segmentfault.com/a/11...

夜雨飘雪 2022-09-11 01:14:59

提升一个上层父组件,里面有个state控管,A与B个别为子组件。大概流程如下:

A中触发a值为1->触发上层组件setState状态设定为: 为A被选中,设定B此时不能被选中->重渲染

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文