7

我正在尝试将redux-formreact-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)为空。

4

2 回答 2

9

具有语义 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>
于 2017-06-23T21:32:43.060 回答
2

如果你想知道复选框是否被选中,你必须使用

onChange={(e, { checked }) => input.onChange(checked)}

代替

onChange={input.onChange}

这是一个工作示例

于 2017-06-14T06:01:53.873 回答