Я создал очень простой компонент да/нет, сопоставленный с истинными/ложными значениями с помощью избыточной формы. При нажатии "Нет" значение в магазине обновляется, но компонент не обновляется. Только после нажатия Да сначала компонент обновляется при нажатии Нет.
Что я здесь делаю неправильно? почему состояние в магазине не отражается в компоненте?
Обратите внимание, что для моего варианта использования важно, чтобы изначально не нажималась ни одна кнопка.
песочница:
https://codesandbox.io/s/r06VKjB4K
import React from 'react';
import { Field, reduxForm } from 'redux-form';
const buttonStyle = {
width: '50px',
display: 'inline-block',
border: '1px solid green',
margin: '5px',
padding: '5px',
cursor: 'pointer',
textAlign: 'center',
};
const ButtonBar = ({ options, input }) =>
<div style={{ display: 'block' }}>
{options.map(x =>
<div
onClick={() => {
input.onChange(x.value);
}}
style={{
...buttonStyle,
...{
backgroundColor: input.value === x.value ? x.selected : 'white',
},
}}
>
{x.displayName}
</div>,
)}
</div>;
const SimpleForm = props => {
return (
<form>
<div style={{ display: 'inline-block', border: '1px solid grey' }}>
<Field
name="myButton"
component={ButtonBar}
options={[
{
value: true,
displayName: 'Yes',
selected: 'green',
},
{
value: false,
displayName: 'No',
selected: 'red',
},
]}
/>
</div>
</form>
);
};
export default reduxForm({
form: 'simple', // a unique identifier for this form
})(SimpleForm);
true/false
. Если вы замените их наa
иb
, все будет работать как положено. Я не очень хорошо знаком с редукционной формой, но документы могут объяснить это. - person enapupe   schedule 14.06.2017