Javascript 更改后,状态不会在“选择列表”选项卡中更新
我使用在我的页面上的选项卡中显示内容,如下所示。我正在映射选项卡内容详细信息的数组,并使用Javascript 更改后,状态不会在“选择列表”选项卡中更新,javascript,twitter-bootstrap,reactjs,Javascript,Twitter Bootstrap,Reactjs,我使用在我的页面上的选项卡中显示内容,如下所示。我正在映射选项卡内容详细信息的数组,并使用{this.getElementByKey(section.name)将正确的内容拉入: <Tabs activeKey={this.state.activeTabId} onSelect={this.handleTabSelect}> {this.state.sections.map(function(section,i){
{this.getElementByKey(section.name)
将正确的内容拉入:
<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>
//getElementByKey method
getElementByKey: function(name){
switch(name) {
case "EditStudentBasicDetails":
return <EditStudentBasicDetails studentId={this.state.studentId} sectionData={this.state.studentData.activeData.basicDetails} />;
case "EditStudentAgentsInfo":
return <EditStudentAgentsInfo studentId={this.state.studentId} sectionData={this.state.studentData.activeData.agentsInfo} />;
case "EditStudentCaseNotes":
return <EditStudentCaseNotes studentId={this.state.studentId} sectionData={this.state.studentData.activeData.caseNotes}/>;
case "EditStudentRegistration":
return <EditStudentRegistration studentId={this.state.studentId} sectionData={this.state.studentData.activeData.registration} />;
case "EditStudentContactDetails":
return <EditStudentContactDetails studentId={this.state.studentId} sectionData={this.state.studentData.activeData.contactDetails} />;
case "EditStudentAttendance":
return <EditStudentAttendance studentId={this.state.studentId} sectionData={this.state.studentData.activeData.attendance} />;
case "EditStudentSENDetails":
return <EditStudentSENDetails studentId={this.state.studentId} sectionData={this.state.studentData.activeData.SENDetails} />;
case "EditStudentSchoolHistory":
return <EditStudentSchoolHistory studentId={this.state.studentId} sectionData={this.state.studentData.activeData.schoolHistory} />;
case "EditStudentDocuments":
return <EditStudentDocuments
studentId={this.state.studentId}
sectionData={this.state.studentData.activeData.documents.docsData}
addedData={{"docsEventsLog": this.state.studentData.activeData.documents.docsEventsLog}}
/>;
default:{
}
}
},
但是当状态更改时,选项卡不会刷新,有人能告诉我如何更新组件吗
更新:
这是我的下拉包装组件:
onSelect: function(res){
var data = {
filterName: this.props.columnName,
filterVal: res.objVal
};
this.setState({
value: res.objVal
});
this.props.handleSelect(data);
},
render: function() {
return (
<Dropdown className={this.props.className}
defaultValue={dropdownDefaultValue}
ddUid={this.props.ddUid}
emptyValId={this.props.emptyValId}
emptyVal={this.props.emptyVal}
label={this.props.label}
labelClassName={this.props.labelClassName}
wrapperClassName={this.props.wrapperClassName}
handleSelect={this.onSelect}
isUseFormGroup={this.props.isUseFormGroup}
isEmptyValUsed={isEmptyValUsed}
options={dropdownOptions}
optLabelCol={this.props.optLabelCol}/>
);
}
onSelect:function(res){
风险值数据={
filterName:this.props.columnName,
filterVal:res.objVal
};
这是我的国家({
值:res.objVal
});
this.props.handleSelect(数据);
},
render:function(){
返回(
);
}
以下是我的选择列表:
var DropdownComponent = React.createClass({
componentWillReceiveProps: function(nextProps){
this.setState({
value: nextProps.defaultValue
});
},
getDefaultProps: function() {
return {
defaultValue: 0,
ddUid: _.uniqueId('dropdown_'),
opUid: _.uniqueId('option_'),
className: "",
label: '',
labelClassName: '',
wrapperClassName: '',
options: [],
optValCol: "id",
optLabelCol: "caption",
emptyValId: 0,
emptyVal: "...",
isUseFormGroup: true,
isEmptyValUsed: true,
handleSelect: function(res){}
}
},
getInitialState: function(){
return {
value: 1
}
},
onSelect: function(){
var objRef = Object.keys(this.refs)[0];
var objVal = this.refs[objRef].getValue();
var data = {
objRef: objRef,
objVal: objVal
};
this.setState({value: objVal});
this.props.handleSelect(data);
},
render: function() {
if(this.props.options.length > 0) {
var options = [], label = '', value = '';
var emptyValOption = this.props.isEmptyValUsed ?
<option value={this.props.emptyValId}>{this.props.emptyVal}</option> : '';
for (var i = 0; i < this.props.options.length; i = i + 1) {
value = this.props.options[i][this.props.optValCol];
label = this.props.options[i][this.props.optLabelCol];
options.push(<option key={this.props.opUid + '_' + value} value={value}>{label}</option>);
}
return (
<Input type='select' label={this.props.label}
defaultValue={this.props.defaultValue}
ref={this.props.ddUid}
className={this.props.className}
labelClassName={this.props.labelClassName}
wrapperClassName={this.props.wrapperClassName}
standalone={!this.props.isUseFormGroup}
onChange={this.onSelect}>
{emptyValOption}
{options}
</Input>
);
} else {
return (
null
);
}
}
var dropdownpomponent=React.createClass({
组件将接收道具:函数(下一步){
这是我的国家({
值:nextrops.defaultValue
});
},
getDefaultProps:function(){
返回{
默认值:0,
ddUid:u.uniqueId('dropdown'),
opUid:u0.uniqueId('option_0'),
类名:“”,
标签:“”,
labelClassName:“”,
包装器类名称:“”,
选项:[],
optValCol:“id”,
optLabelCol:“标题”,
emptyValId:0,
emptyVal:“…”,
isUseFormGroup:对,
是的,
handleSelect:function(res){}
}
},
getInitialState:函数(){
返回{
价值:1
}
},
onSelect:function(){
var objRef=Object.keys(this.refs)[0];
var objVal=this.refs[objRef].getValue();
风险值数据={
objRef:objRef,
objVal:objVal
};
this.setState({value:objVal});
this.props.handleSelect(数据);
},
render:function(){
如果(this.props.options.length>0){
变量选项=[],标签='',值='';
var emptyValOption=this.props.isemptyvalued?
{this.props.emptyVal}:'';
对于(变量i=0;i
})能否提供TableDropdown实现?能否提供TableDropdown实现?
var DropdownComponent = React.createClass({
componentWillReceiveProps: function(nextProps){
this.setState({
value: nextProps.defaultValue
});
},
getDefaultProps: function() {
return {
defaultValue: 0,
ddUid: _.uniqueId('dropdown_'),
opUid: _.uniqueId('option_'),
className: "",
label: '',
labelClassName: '',
wrapperClassName: '',
options: [],
optValCol: "id",
optLabelCol: "caption",
emptyValId: 0,
emptyVal: "...",
isUseFormGroup: true,
isEmptyValUsed: true,
handleSelect: function(res){}
}
},
getInitialState: function(){
return {
value: 1
}
},
onSelect: function(){
var objRef = Object.keys(this.refs)[0];
var objVal = this.refs[objRef].getValue();
var data = {
objRef: objRef,
objVal: objVal
};
this.setState({value: objVal});
this.props.handleSelect(data);
},
render: function() {
if(this.props.options.length > 0) {
var options = [], label = '', value = '';
var emptyValOption = this.props.isEmptyValUsed ?
<option value={this.props.emptyValId}>{this.props.emptyVal}</option> : '';
for (var i = 0; i < this.props.options.length; i = i + 1) {
value = this.props.options[i][this.props.optValCol];
label = this.props.options[i][this.props.optLabelCol];
options.push(<option key={this.props.opUid + '_' + value} value={value}>{label}</option>);
}
return (
<Input type='select' label={this.props.label}
defaultValue={this.props.defaultValue}
ref={this.props.ddUid}
className={this.props.className}
labelClassName={this.props.labelClassName}
wrapperClassName={this.props.wrapperClassName}
standalone={!this.props.isUseFormGroup}
onChange={this.onSelect}>
{emptyValOption}
{options}
</Input>
);
} else {
return (
null
);
}
}