Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 是否以ref以外的其他方式访问子组件状态?_Javascript_Reactjs - Fatal编程技术网

Javascript 是否以ref以外的其他方式访问子组件状态?

Javascript 是否以ref以外的其他方式访问子组件状态?,javascript,reactjs,Javascript,Reactjs,我无法在我的应用程序中使用类似于this.refs.child.state的东西来访问子组件的状态,因此需要另一种方法来访问。这样做的主要原因是,当在childs父组件中单击某个按钮时,将子内容传递到redux状态,因此父组件中的函数需要传递childs内容作为参数之一。取决于组件的结构(不发布代码时很难判断),你可以通过道具链接回调来解决这个问题。即 var Parent = React.createClass({ onChange: function(childValue){

我无法在我的应用程序中使用类似于
this.refs.child.state
的东西来访问子组件的状态,因此需要另一种方法来访问。这样做的主要原因是,当在childs父组件中单击某个按钮时,将子内容传递到redux状态,因此父组件中的函数需要传递childs内容作为参数之一。

取决于组件的结构(不发布代码时很难判断),你可以通过道具链接回调来解决这个问题。即

var Parent = React.createClass({
    onChange: function(childValue){
        this.setState({childValue: childValue});
    },
    render: function(){
        return <Child onChange={this.onChange} />
    }
});

var Child = React.createClass({
    handleChange: function(event){
        this.props.onChange(event.target.value);
    },
    render: function(){
        return <input onChange={this.handleChange}/>
    }
});
var Parent=React.createClass({
onChange:函数(childValue){
this.setState({childValue:childValue});
},
render:function(){
返回
}
});
var Child=React.createClass({
handleChange:函数(事件){
this.props.onChange(event.target.value);
},
render:function(){
返回
}
});
根据表单的需要添加尽可能多的中间层

var MiddleChildA = React.createClass({
    render: function(){
        return <MiddleChildB onChange={this.props.onChange} />
    }
});
var MiddleChildA=React.createClass({
render:function(){
返回
}
});

为什么不能使用
refs
?@dandavis老实说,我不完全确定,我在我的子组件上指定了
ref=“someRef”
,但当我使用inspector查找它时,它不会显示。我使用它们的方式是我有我的
{this.props.children}
,其中children是其他组件。@dandavis Chidren组件是我放在ref上的那些被忽略的组件。简单的方法是将它们定义在一起并使用闭包,以便生命周期代码可以共享psudeo全局。您可以使用实数globals对子对象或JSX本身中的方法执行或分派()。您还可以订阅父级上的事件并在子级上触发它们,因为事件会冒泡。您也可以使用基于函数的
ref=
将孩子身上有趣的elm推到可以到达的地方。@dandavis请您提供扩展的答案和代码示例,因为我不完全理解您的想法(新反应)