Reactjs 单选按钮不工作
我已经创建了一个无线电组件,但是当单击它时,它不会显示选中 这是密码Reactjs 单选按钮不工作,reactjs,react-redux,Reactjs,React Redux,我已经创建了一个无线电组件,但是当单击它时,它不会显示选中 这是密码 import React from 'react'; import classnames from 'classnames'; const RadioButton = (field) => { const inputClasses = classnames('form-group has-feedback ',{ 'has-error': field.meta.touched && f
import React from 'react';
import classnames from 'classnames';
const RadioButton = (field) => {
const inputClasses = classnames('form-group has-feedback ',{
'has-error': field.meta.touched && field.meta.error,
});
return(
<div className={inputClasses}>
<label className="radio-inline custom-radio nowrap">
<input
disabled={field.disabled}
type="radio"
name={field.input.name}
value={field.input.value}
defaultChecked={field.defaultChecked}
{...field.input}
/>
<span>{field.label}</span>
</label>
</div>
);
};
export default RadioButton;
从“React”导入React;
从“类名称”导入类名称;
常量单选按钮=(字段)=>{
const inputClasses=classnames('表单组有反馈'{
“has error”:field.meta.com&&field.meta.error,
});
返回(
{field.label}
);
};
导出默认单选按钮;
以下是字段:
<Field
label="True"
component={RadioButton}
name="True"
type="radio"
value={true}
defaultChecked={ true }
/>
<Field
label="False"
component={RadioButton}
name="False"
type="radio"
value={false}
defaultChecked={ false }
/>
这是我在控制台上得到的警告:
警告:RadioButton包含带有选中和默认选中道具的单选类型输入。输入元素必须受控或不受控(指定选中的属性或默认选中的属性,但不能同时指定两者)。决定使用受控或非受控输入元素,并移除其中一个道具
有人能帮我吗?请用这个
它工作得很好
<label>
<input type="radio" defaultChecked={true} disabled={false} value={YOUR_Value} />
{this.state.content}
</label>
{this.state.content}
您应该查看官方文档,特别是关于和的章节
受控元件 基本上,通过受控组件,您可以让React管理所述元素的值 其值由React以这种方式控制的输入表单元素称为“受控组件” 要创建受控组件,您需要一个存储其值的状态变量,以及一个基于某个事件(单击、输入等)改变其值的函数 下面是一个简单的例子:
class ControlledComponentDemo扩展了React.Component{
构造函数(){
超级();
此.state={
输入:“,
无线电:空,
复选框:[]
};
}
changeInput=(e)=>{
this.setState({input:e.target.value});
}
changeRadio=(id)=>{
this.setState({radio:id});
}
changeCheckbox=(id)=>{
让arr=this.state.checkbox.slice();
如果(arr.indexOf(id)>=0){
arr.拼接(arr.indexOf(id),1);
}否则{
arr.push(id);
}
this.setState({checkbox:arr});
}
render(){
返回(
=0}onChange={this.changeCheckbox.bind(this,0)}/>
=0}onChange={this.changeCheckbox.bind(this,1)}/>
);
}
}
ReactDOM.render(,document.getElementById(“app”)代码>
控制台中是否有任何错误或警告?另外,你能告诉我们字段
对象是什么样子的吗?我会更新这个问题。没有错误。。我要警告你,没有任何财产的价值分配是什么意思?请参考HTML中的输入标签!JSX很好。你必须使用正确的语法。{…field.input}//在这里使用它!不,OP正确地使用了它。这叫做解构道具。非常感谢克里斯。。你能告诉我为了让它工作我必须做些什么改变吗。。如果我删除{…field.input},它将不会接受所选的输入,因为你说我把事情搞混了。那么你能告诉我应该怎么做才能得到初始值吗?我不知道{field.input}中有什么,也不知道它是否需要任何东西。但是如果您遵循我的有状态示例,只需添加一个value prop并确保它有一个初始值(在构造函数中设置)