无法使复选框与redux-form和react-semantic-ui一起使用

时间:2017-06-14 05:05:35

标签: reactjs semantic-ui redux-form semantic-ui-react

我尝试将 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)的输出为空。

2 个答案:

答案 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}

这是working example