我对(react)redux表单中输入值的toString()行为有线问题。我需要一个下拉菜单,其中包含数字作为值。 json看起来像这样:
{
id: 1
[...]
}
我的组件如下所示:
export class DropdownField extends React.Component {
render() {
var { input, meta: { touched, error } } = this.props
//The tries of changing input.value to string are placed here
//e.g. input.value = "2"
return (
<div className="field">
<select {...input}>
<option value="1">1</option>
<option value="2">2</option>
</select>
</div>
)
}
};
这里的问题是,input.value不是字符串,因此input.value = 2不会被识别为“2”。我想,我可以将input.value更改为字符串来解决这个问题。如果我这样做,它的效果很好
input.value = "2" //Works
但无论如何,如果我使用原始input.value我无法使其工作,所以以下不起作用:
input.value = input.value.toString(); //Doesn't work
input.value = "" + input.value; //Doesn't work
input.value = getString(input.value) //Doesn't work
//Just for completition, this plain stupid method. It runs in case 2, but still doesn't work
var getString = (input) =>
{
switch(input)
{
case 1:
return "1";
case 2:
return "2";
default:
return "what"
}
}
有谁知道这里发生了什么?我真的只需要设置下拉框的初始值,其他一切都有效。只要我通过UI更改选择,input.value就会更改为相应的字符串值并可以保存。