Javascript 组件状态未从触发器更新
我正在尝试更新页面组件中的状态数据,回调正在启动,正确的数据将进入每个页面,但编辑的值不显示在我的表格组件中,它显示在可编辑的输入中,但不显示在我的表格单元格中,改为显示编辑前的值 有人能帮我在显示的页面中获取新值吗 我使用选项卡从一个页面切换到另一个页面,每个页面组件都安装在主编辑页面上,如下所示:Javascript 组件状态未从触发器更新,javascript,reactjs,refluxjs,Javascript,Reactjs,Refluxjs,我正在尝试更新页面组件中的状态数据,回调正在启动,正确的数据将进入每个页面,但编辑的值不显示在我的表格组件中,它显示在可编辑的输入中,但不显示在我的表格单元格中,改为显示编辑前的值 有人能帮我在显示的页面中获取新值吗 我使用选项卡从一个页面切换到另一个页面,每个页面组件都安装在主编辑页面上,如下所示: switch(name) { case "PageName": return <ExamplePageComponent
switch(name) {
case "PageName":
return <ExamplePageComponent
Id={this.state.id}
sectionData={this.state.studentData.sectionData} />;
选项卡组件:
<Tabs activeKey={this.state.activeTabId} onSelect={this.handleTabSelect}>
{this.state.sections.map(function(section,i){
return (
<Tab
eventKey={section.value}
title={section.label}
key={i}
tabClassName="tabs__item"
>
{this.getElementByKey(section.name)}
</Tab>
);
}, this)}
</Tabs>
在我调用这个action/store方法的每个页面组件更新中,saveMethod在回调中都有正确的数据
updateStudentData: function(addUpdateData) {
switch(this.data.dataSectionID){
case 1:
var callback = function(){
StudentDataActions.updateEditStudentPageState(rowDataToSave.studentId, 1)
}.bind(this);
Service.saveMethod(rowDataToSave, callback);
break;
case 2// etc
我对上述方法的回调是:
setLoadedState: function(data) {
this.studentData.activeData.sectionName = data;
this.trigger(this.studentData);
},
我的行动是:
var ApplicationActions = Reflux.createActions([
'routeChange',
'getPageData',
'setLoadedState',
'updatePageDataFilters'
]);
我以此为例,您是否使用text/jsx作为脚本类型?您的
手柄Abselect
:您首先执行设置状态
,然后启动操作以更新某些存储setState
是一个异步操作,因此后面的调用可能还不知道新状态。一般来说,这种由setState和action循环双重触发渲染的方式总是很棘手的。非常感谢您的回复,有没有更好的方法来构造handleTabSelect
?
updateStudentData: function(addUpdateData) {
switch(this.data.dataSectionID){
case 1:
var callback = function(){
StudentDataActions.updateEditStudentPageState(rowDataToSave.studentId, 1)
}.bind(this);
Service.saveMethod(rowDataToSave, callback);
break;
case 2// etc
setLoadedState: function(data) {
this.studentData.activeData.sectionName = data;
this.trigger(this.studentData);
},
var ApplicationActions = Reflux.createActions([
'routeChange',
'getPageData',
'setLoadedState',
'updatePageDataFilters'
]);