在不使用渲染函数的情况下,将子组件的状态设置为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));
}