Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/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
在不使用渲染函数的情况下,将子组件的状态设置为ReactJs中的parentComponent_Reactjs_Sockets - Fatal编程技术网

在不使用渲染函数的情况下,将子组件的状态设置为ReactJs中的parentComponent

在不使用渲染函数的情况下,将子组件的状态设置为ReactJs中的parentComponent,reactjs,sockets,Reactjs,Sockets,我有一个父组件 var ViewUser = React.createClass({ getInitialState: function () { return { ChatMembers: [], Messages: [] }; } } 以及一个子组件,在该组件中,我使用套接字获取对话消息,并成功更改消息的状态 var SideMembers = React.createClass({ render: funct

我有一个父组件

var ViewUser = React.createClass({
  getInitialState: function () {
     return {
         ChatMembers: [],
          Messages: []
      };
 }
}
以及一个子组件,在该组件中,我使用套接字获取对话消息,并成功更改消息的状态

  var SideMembers = React.createClass({
     render: function () {
      return (
        <div className="media-body" onClick={this.StartChat} />)
 },
StartChat: function (e) {
    e.preventDefault();
    socket.emit('Get-chat', {
        Conversationid: chatID
    });
    socket.on('Chat-History', function (data) {
        this.setState({ Messages: data });
    }.bind(this));
 }
var SideMembers=React.createClass({
渲染:函数(){
返回(
)
},
StartChat:函数(e){
e、 预防默认值();
socket.emit('Get-chat'{
会话ID:chatID
});
socket.on('Chat-History',函数(数据){
this.setState({Messages:data});
}.约束(这个);
}

但是现在我想将
ViewUser
的状态设置为
SideMembers
的当前状态,而不使用渲染功能

我想您想从子组件-
SideMembers
更新父组件-
ViewUser

为了实现这一点,您需要从
ViewUser

var ViewUser=React.createClass({
getInitialState:函数(){
返回{
成员:[],
信息:[]
};
}
updateState:函数(newMessages){
this.setState(消息:newMessages);
}

}
您需要使用道具并从子函数
侧成员调用函数

//Require Child component = SideComponent
var ViewUser = React.createClass({
getInitialState: function () {
 return {
     ChatMembers: [],
      Messages: []
  };
 }
},

updateState:function(date){
this.setState({Messages:data.Messages});
},

render:function(){
  return(
   <SideComponent
      updateState={this.updateState}   
      )
 }
//需要子组件=侧组件
var ViewUser=React.createClass({
getInitialState:函数(){
返回{
成员:[],
信息:[]
};
}
},
更新状态:函数(日期){
this.setState({Messages:data.Messages});
},
render:function(){
返回(

“不使用渲染函数”是什么意思?比如调用函数并将SideMembers的道具发送给ViewUseryes,但是如何准确地调用函数?从StartChat中调用function@YahyaAhmed:答案已更新。请确保进行一些调整以符合您的逻辑。
var SideMembers = React.createClass({
 render: function () {
  return (
    <div className="media-body" onClick={this.StartChat} />)
 },
     StartChat: function (e) {
    e.preventDefault();
    socket.emit('Get-chat', {
    Conversationid: chatID
         });
     socket.on('Chat-History', function (data) {
       this.setState({ Messages: data });
       var msg = this.state;
       this.props.updateState(msg);
     }.bind(this));
 }