在我們的終極版表5.3(不6.x的)應用程序,我想渲染<input type="checkbox" />
像這樣:在Redux窗體中,如何設置複選框的選中屬性的初始值?
// In some cases, fieldHelper.checked is initially undefined. Then, when the
// user clicks one of the checkboxes, fieldHelper.checked is
// explicitly set to true or false. This change from one of the component's
// props being undefined to having a value causes a React warning; see
// http://stackoverflow.com/a/38015169/473792 and
// https://facebook.github.io/react/docs/forms.html#controlled-components
// So to prevent that warning, we do a quick null check on
// fieldHelper.checked and replace it with false explicitly if it is
// undefined before rendering the checkbox.
const fieldHelper = this.props.field['checkbox'];
const checked = fieldHelper.checked || false;
const modifiedFieldHelper = Object.assign({}, fieldHelper);
delete modifiedFieldHelper.checked;
return (
<input
checked={checked}
{...modifiedFieldHelper}
/>
);
}
正如評論所指出的,在我的測試環境,this.props.field['checkbox'].checked
是undefined
立即在安裝<input>
後。其結果是,在我的測試中修改的this.props.field['checkbox'].checked
的價值,我得到以下警告:
警告:ApplicantForm正在改變類型複選框的不受控制的輸入進行控制。輸入元素不應從非受控狀態切換爲受控狀態(反之亦然)。決定在組件的使用期限內使用受控或不受控制的輸入元素。
...除非我明確設置checked
prop上<input>
到false
而不是undefined
,如代碼段我張貼以上證明。
而不是使用此空檢查,我想在我的測試運行之前設置初始值this.props.fields['checkbox'].checked
。 I know I can set the initial value of fields in Redux Form.有沒有辦法設置輔助屬性的初始值,如Redux Form也控制的checked
屬性?
您是否嘗試過使用布爾值? – gustavohenke
它看起來像終極版表格目前有一些錯誤與它如何與複選框的作品,所以我可能對運行起來:https://github.com/erikras/redux-form/issues/334 – Kevin