在ReactJS中,如何在将新值推入数组之前验证状态数据
How to validate a state data before pushing a new value into array in ReactJS?
朋友们,我正在用ReactJs写一个拖放项目的例子。我把项目放到一个新的div中把它们放到一个新的数组中。现在我的新数组(拖放数组)应该验证,而不是在我的新div中明智地拖放相同的项目。我不知道如何验证新的拖放项目与现有的拖放数组。
下面是我的代码:<!doctype html>
<html00 lang="en">
<head>
<meta charset="UTF-8">
<title>React JS Example 1</title>
<style>
#div1 {width:350px;height:200px;padding:20px;border:1px solid #aaaaaa;}
</style>
</head>
<body>
<div id="container"></div>
<div id="container1"></div>
<script src="react.js"></script>
<script src="react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js"></script>
<script type="text/babel">
/*** @jsx React.DOM */
var Employee = React.createClass({
getInitialState: function(){
return {data: [], empName: '',dropData:[]};
},
onClick: function(event){
this.state.data.push({empName: this.state.empName});
this.setState({empName: ''});
},
onNameChange: function(event){
this.setState({empName : event.target.value});
},
drag: function(event) {
event.dataTransfer.setData("div", event.target.id);
},
render: function(){
return(
<div>
<h1> Add New Employees </h1>
Employee Name : <input type="text" value={this.state.empName} onChange={this.onNameChange}/>
<button onClick={this.onClick}>Add</button>
<ul>
{this.state.data.map(function(item, i) {
return (<li data-id={i} id={i} draggable="true" onDragStart={this.drag}>{item.empName}</li>)
}, this)}
{this.state.data.length > 0 ?<NewEmployee data={this.state.data}/> : null}
</ul>
</div>
)
}
});
var NewEmployee = React.createClass({
getInitialState: function(){
return {data: this.props.data,dropData:[]};
},
allowDrop: function(event) {
event.preventDefault();
},
dropItem: function(event) {
event.preventDefault();
var new_data = event.dataTransfer.getData("div"),
arr = this.state.dropData;
arr.push(this.props.data[new_item]);
this.setState({dropData: arr});
},
render: function(){
return(
<div id="div1" onDrop={this.dropItem} onDragOver={this.allowDrop}>
{this.state.dropData.map(function(items, i) {
return (<li>{items.empName}</li>)
}, this)}
</div>
)
}
});
ReactDOM.render(<Employee/>, document.getElementById('container'));
</script>
</body>
</html>
var NewEmployee = React.createClass({
getInitialState: function(){
return {data: this.props.data,dropData:[]};
},
allowDrop: function(event) {
event.preventDefault();
},
dropItem: function(event) {
event.preventDefault();
var new_data = event.dataTransfer.getData("div"),
arr = this.state.dropData;
if(arr.indexOf(new_data) > -1) {
arr = arr.slice();
arr.push(this.props.data[new_data]);
this.setState({dropData: arr});
}
},
render: function(){
return(
<div id="div1" onDrop={this.dropItem} onDragOver={this.allowDrop}>
{this.state.dropData.map(function(items, i) {
return (<li>{items.empName}</li>)
}, this)}
</div>
)
}
});
相关文章:
- 验证会话中是否存在对象's数组
- 如何创建一个方法来验证数组的范围
- Join架构验证:Join.object定义数组中的有效键
- 在对象上迭代以验证它是否's键存在于数组中
- validate.js验证数组元素
- 根据某些条件验证用户输入,而不是将输入输入到数组中,需要最基本的解决方案
- 验证来自 javascript 数组的文本字段输入
- Join验证对象数组,这样只有一个对象具有特定属性
- 验证数组文件字段的表单提交
- 使用 javascript 验证输入数组
- jQuery 验证器正则表达式使用数组或变量
- AngularJS 无法自定义验证模型数组值
- 如何编写一个测试来验证函数是否已成功将字符串列表(在数组中指定)打印到屏幕上
- 搜索输入字段以搜索 JavaScript 数组 - 如何验证空输入框
- 角度架构形式 - 数组验证
- 如何根据输入字段数组验证禁用提交按钮
- 使用数组验证两个选择框
- 基于数组验证输入
- 在jquery中通过数组验证多个文件上传
- 从数组验证文件扩展名