reactjs - 每次击键时都会重新呈现整个表单
问题描述
我有一个用于用户注册的复杂表单设置问题是整个表单在每次击键时都会重新呈现
应用结构
我在下面以自上而下的方式给出了我的应用程序的架构
UserRegistration
包含单一事实来源的父组件具有对象形式的状态,它将输入值作为道具传递给其子组件
user:{
number: '1234',
firstName: 'Vaibhav',
lastName: 'Shelke'
}
它的孩子是
<UserDetails
getUserDetails={(userDetails, errors) => {
this.setState({
userDetails,
errors: errors || {},
isSubmitable:
countLeaves(errors) === 0 && countLeaves(userDetails) > 0
});
}}
values={this.state.userDetails}
errors={this.state.errors}
/>
UserDetails
可重用组件,包含基本值,如 firstName、lastName、number。该组件从其父组件(即 UserRegistraion)获取 inputValues 以及反映父组件更改的函数
handleInput = (e, name) => {
const { values, getUserDetails } = this.props;
const userDetails = { ...values };
if (e instanceof Date) {
userDetails[name] = format('yyyy-MM-dd', e); // Date Input
} else if (e) {
userDetails[e.target.name] = e.target.value; // Text Input
}
getUserDetails(userDetails, validateUser(userDetails));
};
TextInput
实际更改它的基本输入组件从其父组件获取其值和处理程序,即。UserDetails 作为道具
const {
label,
name,
onInputChange,
icon,
intent,
helperText,
labelInfo,
value,
type
} = this.props;
return (
<FormGroup
helperText={helperText}
label={label}
labelFor="text-input"
labelInfo={labelInfo || ''}
>
<InputGroup
type={type}
intent={intent}
leftIcon={icon}
id={name}
name={name}
placeholder={label}
onChange={e => onInputChange(e)}
value={value || ''}
/>
</FormGroup>
);
以上所有组件都是基于类的组件
我试过使用 shouldComponentUpdate() 但这仍然不起作用
解决方案
推荐阅读
- ionic-framework - 减少内存空间的离子存储问题
- javascript - onbeforeunload 仅在开发人员工具窗口处于活动状态时才有效
- php - GT Metrix 添加过期标头
- facebook - 在 https 服务器上测试 Facebook 即时游戏时,网站继续以 0% 加载
- javascript - 如何在 JEST 中模拟 Cookie.get('language')
- symfony-1.4 - 如何在学说迁移中从另一个字段设置字段的默认值?
- angular - 如何将微调器与 *ngFor async 一起使用
- python-3.x - 从 HTML 数据透视表中提取数据
- python-3.x - 在python中生成多维网格
- angular - 如何在两个 Angular 2 应用程序之间共享会话数据