我尝试将 redux-form 与 react-semantic-ui 一起使用,并且 Checkbox 组件出现问题。未检查复选框。我已经按照 redux-form 文档中的示例进行了操作,但没有运气。这是代码段:
renderCheckBox = ({ input, label }) => {
console.log(input.value);
return (
<Form.Field>
<Checkbox
label={label}
checked={input.value ? true : false}
onChange={input.onChange}
/>
</Form.Field>
);
};
<Field
name="activated"
label="Activate?"
component={this.renderCheckBox}
/>
console.log(input.value)
的输出为空。
答案 0 :(得分:7)
带有语义ui的可重复使用的redux表单复选框
import React from 'react';
import { object } from 'prop-types';
import { Field } from 'redux-form/immutable';
import { Checkbox as CheckboxUI } from 'semantic-ui-react';
const Checkbox = ({
input: { value, onChange, ...input },
meta: { touched, error },
...rest
}) => (
<div>
<CheckboxUI
{...input}
{...rest}
defaultChecked={!!value}
onChange={(e, data) => onChange(data.checked)}
type="checkbox"
/>
{touched && error && <span>{error}</span>}
</div>
);
Checkbox.propTypes = {
input: object.isRequired,
meta: object.isRequired
};
Checkbox.defaultProps = {
input: null,
meta: null
};
export default props => <Field {...props} component={Checkbox} />;
如何使用?
import Checkbox from './Checkbox';
<form>
...
<Checkbox name="example" />
...
</form>
答案 1 :(得分:2)
如果您想知道是否选中了复选框,则必须使用
onChange={(e, { checked }) => input.onChange(checked)}
而不是
onChange={input.onChange}