Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问组件';使用React从另一个组件获取的类属性?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何访问组件';使用React从另一个组件获取的类属性?

Javascript 如何访问组件';使用React从另一个组件获取的类属性?,javascript,reactjs,Javascript,Reactjs,如果我创建一个像 class-Foo{ 建造师(酒吧){ 这个.bar=bar; } } 设foo=newfoo('baz'); console.log(foo.bar);//baz你做不到。React只能将数据传递到其父级到子级,但不能将数据从子级到父级或节点传递到同级(据我所知)。 因此,您可能会使用Redux,或者您也可以创建一个全局变量,将其命名为存储,并为存储中的组件定义属性。稍后,您将传递的任何数据都将引用此全局变量。但我不这么认为,这是一个好的做法。我所知道的正式实用的方法是使用

如果我创建一个像

class-Foo{
建造师(酒吧){
这个.bar=bar;
}
}
设foo=newfoo('baz');

console.log(foo.bar);//baz
你做不到。React只能将数据传递到其
父级到子级
,但不能将数据从
子级到父级
节点传递到同级
(据我所知)。 因此,您可能会使用Redux,或者您也可以创建一个全局变量,将其命名为存储,并为存储中的组件定义属性。稍后,您将传递的任何数据都将引用此全局变量。但我不这么认为,这是一个好的做法。我所知道的正式实用的方法是使用Redux。

您可以使用可观察对象(面向服务)在组件之间传递数据(属性值)。这将为一个对象分配组件属性值,然后通过订阅传递给另一个已订阅该可观察对象的组件

import { Subject } from 'rxjs';

const subject = new Subject();

export const messageService = {
    sendMessage: message => subject.next({ text: message }),
    clearMessages: () => subject.next(),
    getMessage: () => subject.asObservable()
};
然后您的组件代码:

 componentDidMount() {
        // subscribe to home component messages
        this.subscription = messageService.getMessage().subscribe(message => {
            if (message) {
                //Do stuff if you have the observable content
            } else {
                //Do other stuff is there is no observable content
            }
        });

谢谢大家的帮助。根据Felix对我的OP的评论,我意识到我的问题是我如何看待状态和数据流。我传递的是组件,而不是数据


我没有(不正确地)使用Refs或添加新的依赖项,而是选择通过state和props将数据传递给子组件,然后再呈现数据。

JSX语法(
)创建了一个React元素。React元素实际上不是类的实例,而是如何实例化类的描述符。您可以通过refs:访问实际实例(及其属性)。话虽如此,也许有更好的方法来实现你的目标。你需要这些属性做什么?@FelixKling这很有道理!裁判在这方面的做法是否很糟糕?我正在努力想办法实现这个功能,否则。。。Thanks@FelixKling我正在尝试实现一个搜索组件,它可以搜索几个不同的卡片阵列。我有一个
玩家
组件,它有
的数组:
放逐
,和
墓地
。我们的想法是使用一个通用的
搜索
组件,该组件可以根据用户输入对上述任何数组中的
卡的名称进行模糊匹配,然后过滤显示的
卡。如果有任何用处,完整的代码就在这里:&我必须警告你,我是一个新手开发人员:)你应该只将卡片对象(
{name:…,image_uris:…}
)作为数据存储在你的状态中,对这些对象执行任何计算,并且只在“最后”呈现它们。好的,不要传递
卡片
组件(实际上不是对象的实例),我应该传递数据,然后再渲染。我想我可能得到了它…谢谢。我觉得我正在用React将我的头撞到墙上。从任何其他OO语言来看,似乎都不会像我想象的那样工作…当然,如果它有帮助的话,我很高兴。我真的不知道这意味着什么。我必须阅读rxjs——谢谢