동적 JSON 데이터가 있고 JSON을 통해 페이지에 양식을 동적으로 렌더링하는 사용자 지정 방법이 있습니다. JSON 스키마의 이유는 미리 정의되지 않은 다양한 양식을 작성하는 것입니다.React with Redux 상태에서 rerendered 전체 양식
아래 스키마와 formValues가이 클래스의 소품으로 지정되도록 Redux를 연결했습니다. 따라서 폼은 올바른 레이블, 올바른 입력 필드 유형 등으로 올바르게 렌더링됩니다. onChange 이벤트가 필드에서 발생하면 appData (formData 아래)가 올바르게 업데이트됩니다. 그러나 appData에서 formData가 변경되면 전체 양식이 "특정 필드"대신에 다시 렌더링된다는 사실을 알게되었습니다. 이 때문에 formData 아래에 개체로 양식 값을 저장하는 오전? 이 문제를 어떻게 피할 수 있습니까?
formData = {
userName: 'username',
firstName: 'firstName
}
예 스키마 돌아 오는 상태
const reducer = combineReducers({
formSchema: FormSchema,
formData: Form
});
// 렌더링 방법
render() {
const { fields } = this.props.form,
forms = fields.map(({label, name, field_type, required }) => {
const value = value; //assume this finds the correct value from the "formData" state.
return (
<div key={name}>
<label>{label}</label>
<input type={field_type}
onChange={this.onChange}
value={value}
name={name} />
</div>
);
})
}
// onchange를 방법
const form = {
"fields":[
{
"label":"Username",
"field_type":"text",
"name":"username"
},
{
"label":"First Name",
"field_type":"text",
"name":"firstName"
}
]
}
(제어 양식 입력에 대해, 상기 필드를 업데이트 formData 앱 상태)
onChange(event) {
this.props.dispatch(updateFormData({
field: event.target.name,
value: event.target.value
}));
}
@ rom-grk- 예, value 속성은 다음을 사용하여 업데이트 중입니다. 상태. 나는 자세한 코드 때문에 여기에 모든 코드를 넣지 않았습니다. shouldComponentUpdate()를 사용하여 위의 제안을 수행했으며 소품이 변경된 구성 요소 만 업데이트했습니다. – Dhana