gpt4 book ai didi

javascript - ReactJs 复选框值和日期未在状态中更新

转载 作者:行者123 更新时间:2023-11-28 06:43:41 25 4
gpt4 key购买 nike

我是 ReactJS 的新手,尝试获取选中/选定复选框的值以及从输入类型日期中选择的日期。但无法实现。

当我单击生成报告按钮时,您可以看到控制台显示状态。仅保存位置,而不保存其他选项。

以下是我更新状态值和初始状态值的函数:

getInitialState: function() {
return {
selectedLocation: locationList[0].value,
selectedServiceType: [],
selectedStDate:new Date(1446887898),
selectedEdDate:new Date(1446887898)
};
},
selectServiceType:function(e){
selectedTypes.indexOf(e.target.value)? selectedTypes.push(e.target.value):console.log('Already exists in array');
this.setState({
selectedServiceType: e.target.checked
})

},
changeHandler: function(e) {
this.setState({
selectedLocation: e.target.value
})
},
selectStDate: function(e) {
this.setState({
selectedDate: e.target.value
})
},
selectEdDate: function(e) {
this.setState({
selectedEdDate: e.target.value
})
},

完整的演示在这里 JSFiddle

非常感谢

最佳答案

我已经重构了,你可以查看一下,Example

var FulfilmentReport = React.createClass({
getInitialState: function() {
return {
services: this.props.services,
location: this.props.locations[1].value,
startDate: this.formatDate(new Date(1446887898)),
endDate: this.formatDate(new Date(1446887898))
};
},

changeService: function (e) {
var services = this.state.services.map(function (service) {
service.checked = (service.value === e.target.value) ? !service.checked : service.checked;
return service;
});

this.setState({
services: services
});
},

handleChange: function(field, e) {
var data = {};
data[field] = e.target.value;

this.setState(data);
},

render: function() {
var buttonClasess = [
'right', 'mdl-button', 'mdl-js-button', 'mdl-button--raised',
'mdl-js-ripple-effect', 'mdl-button--colored'
].join(' ');

var services = this.state.services.map(function (service) {
return [
<label>{ service.name }</label>,
<input
type="checkbox"
name={service.value}
value={service.value}
checked={service.checked}
onChange={ this.changeService } />
];
}, this)

var locations = this.props.locations.map(function (location, index) {
return (<option key={index} value={ location.value }>{ location.name }</option>);
});

var elements = [{
label: <label>Location</label>,
data: <select
onChange={ this.handleChange.bind(this, 'location') }
value={ this.state.location }>{ locations }</select>
}, {
label: <label>Service Type</label>,
data: <div>{ services }</div>
},{
label: <label>Start Date</label>,
data: <input
type="date"
value={ this.state.startDate }
onChange={ this.handleChange.bind(this, 'startDate') } />
},{
label: <label>'End Date'</label>,
data: <input
type="date"
value={ this.state.endDate }
onChange={ this.handleChange.bind(this, 'endDate') } />
}];

elements = elements.map(function (element) {
return [element.label, element.data];
});

return (<div id="items">
<div>{ elements }</div>
<input type="button" value="Generate Report" onClick={ this.onItemClick } className={ buttonClasess } />
</div>);
},

onItemClick: function() {
this.state.services = this.state.services.filter(function (el) {
return el.checked;
}) ;

console.log( this.state );
},

formatDate: function (date) {
return date.toISOString().slice(0, 10);
}
});

关于javascript - ReactJs 复选框值和日期未在状态中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33581165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com