如何在reactJS中获取动态输入文本的值
How to get value of dynamic input text in reactJS
目前我在ReactJS中遇到了从动态组件获取值的问题。
示例:
我有5个复选框:A, B, C, D, E
。当我选中A
复选框时,我希望添加新的输入文本A
,当我选中B
以添加新的输出文本B
等等。当我取消选中复选框时我希望删除相应的输入文本。
我有一个按钮"保存",当我点击保存时,我想得到渲染输入文本的值。有人有想法吗?
以下是我的代码。它并不像上面的例子。我渲染了一个表=>表列表=>列表项=>选择选项。所以我想得到表中所有的选择值:
var React = require('react');
var AssignmentTranslatorItem = React.createClass({
getInitialState: function () {
return {
selectedItem: -1
};
},
componentDidMount: function () {
return {};
},
renderTranslator: function(translatorList) {
var items = []
var arrTrans = translatorList.arrTrans
var selectedItem = translatorList.selectedItem
if(selectedItem == -1)
items.push(<option value="-1" selected>(Select Translator)</option>)
else
items.push(<option value="-1">(Select Translator)</option>)
for (var i in arrTrans) {
if(selectedItem == arrTrans[i].id)
items.push(<option value={arrTrans[i].id} selected>{arrTrans[i].username}</option>)
else
items.push(<option value={arrTrans[i].id}>{arrTrans[i].username}</option>)
}
return items
},
render: function () {
return (
<tr>
<td>{this.props.languageName}</td>
<td>
<select className="form-control" ref="translatorList">
{this.renderTranslator(this.props.translatorList)}
</select>
</td>
</tr>
);
}
});
var AssignmentTranslatorList = React.createClass({
render: function () {
var tmp = this.props.data.map(function (obj, index) {
return (
<AssignmentTranslatorItem languageName={obj.lang.name} translatorList={obj} key={index}></AssignmentTranslatorItem>
);
});
return (
<tbody>
{tmp}
</tbody>
);
}
});
module.exports = React.createClass({
getInitialState: function () {
return {
data: [
{
"lang": {
"id": 1,
"name": "English"
},
"arrTrans": [
{
"id": 3,
"username": "hhuihuihiuhuihiuh"
},
{
"id": 4,
"username": "zcdscac"
}
],
"selectedItem": 4
},
{
"lang": {
"id": 2,
"name": "French"
},
"arrTrans": [
{
"id": 3,
"username": "hhuihuihiuhuihiuh"
}
],
"selectedItem": -1
}
]
};
},
componentDidMount: function () {
},
render: function () {
return (
<div className="table-responsive">
<table className="table table-bordred table-striped">
<thead>
<tr>
<th>Language</th>
<th>Assigned Translator</th>
</tr>
</thead>
<AssignmentTranslatorList data={this.state.data} ref='assignTranslatorList'></AssignmentTranslatorList>
<tfoot>
<tr>
<td></td>
<td>
<button type="button" className="btn btn-success">
Assign
</button>
</td>
</tr>
</tfoot>
</table>
<div className="clearfix"></div>
</div>
);
}
});
我看到你需要一些类似于中LinkedStateMix的东西
var LinkedStateMixin = require('react-addons-linked-state-mixin');
var WithLink = React.createClass({
mixins: [LinkedStateMixin],
getInitialState: function() {
return {message: 'Hello!'};
},
render: function() {
return <input type="text" valueLink={this.linkState('message')} />;
}
});
或者你可以用lodash自己制作,你不需要这种混合物。
linkState(propertyPath) {
return {
value: _.get(this.state, propertyPath),
requestChange: value => this.setState(_.set(_.clone(this.state), propertyPath, value))
};
}
与我的版本的最大区别是,你现在可以放弃像这样的嵌套路径
<TextInput label="Name" valueLink={this.linkState('branch.name')} />
<CheckBox label="Name" checkedLink={this.linkState('branch.name')} />
注意:如果您使用valueLink作为复选框,请改用checkedLink。
相关文章:
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- 使用模拟按键在输入框中自动输入文本
- 如何添加类,同时开始在文本字段中输入文本
- JQuery使用相同的功能自动完成各种输入文本
- 如何设置输入文本框jquery的值
- 输入文本框为空时的阻止按钮asp.网络表单
- 基于单选框更新页眉,选中并选择输入文本
- 将输入文本与某个选项的值相匹配并自动选择
- 如何在 JavaScript 中创建输入文本框
- 如何使用纯Javascript观看输入文本框
- 需要使用javascript获取输入文本,然后将其添加到句子中
- php&js-将电子邮件添加到输入文本中
- 动态启用/禁用来自控制器的输入文本
- .val()不返回输入文本
- 从确认框中预填充输入文本框
- 如何使用JavaScript解析输入文本中给定的数据
- 添加/删除/更改输入文本的部分值
- 根据输入文本按元素排序,AngularJS
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 如何从Tr重复的输入文本中获取值