Как сохранить значения такими же ссылочными. Разве значение не должно быть того же типа, что и мы? - PullRequest
0 голосов
/ 28 марта 2019

У меня есть вход select, где я устанавливаю значения в виде чисел:

<Field name="freq" component="select" className="form-control">
    <option />
    <option value={0}>Hourly</option>
    <option value={1}>Daily</option>
    <option value={2}>Weekly</option>
    <option value={3}>Monthly</option>
    <option value={4}>Yearly</option>
</Field>

Затем у меня есть поле <Condition>, которое отображает что-либо на основе значения:

const Condition = ({ when, is, children }) => (
    <Field name={when} subscription={{ value: true }}>
        { ({ input: { value } }) => is(value) ? children : null }
    </Field>
);

Тогда я использую это так:

<Condition when="freq" is={freq => [0, 1].includes(freq)}>
    HELLO!!!
</Condition>

Однако это не работает, потому что .includes также проверяет тип.Но я ожидаю и хочу, чтобы тип поля freq был числом, потому что я установил значения как числа.Я не хочу использовать parse={value => value === undefined ? undefined : parseInt(value)}.Причина, по которой я не хочу использовать это, заключается в том, что у меня есть случай, когда я устанавливаю value для специальных объектов.Так что я ожидаю, что value будет того же типа относительно того, что я установил, возможно ли это?

В будущем я должен сделать:

<Field name="freq" component="select" className="form-control">
    <option />
    <option value={Enum.FOO}>Hourly</option>
...