微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ReactJS handleChange与更改数组中的子数据

如何解决ReactJS handleChange与更改数组中的子数据

一个经典的句柄更改功能。我可以在同一目录中更改数据。没有问题。但是我有子数据。我不能改变他们。我想将此处理干净,而无需在handlechange中键入额外的功能。我该怎么办?

我的状态:

 this.state = {
            formData: {
                appointedbroker: '',propertyinformations: {
                    rent: false,property: {
                        housing: false,},features: {
                        rooms: ""
                    },location: ""
                },}
        }

我的handleChange函数

 handleChange(event) {
        const { formData } = this.state;
        formData[event.target.name] = event.target.value;
        this.setState({ formData });
    }

和我的输入

        <TextField
            value={propertyinformations.features.rooms}
            onChange={(e) => this.handleChange(e)}
            id="rooms"
            name={'rooms'}
            type={'text'}
            label={t('Rooms')} />

在这种情况下,我只是更改了“ appointedbroker”数据 例如;我想换“房间”

解决方法

handleChange函数中,您是directly mutating the state,与React模式相反。这样做会导致componentDidUpdate无法检测到更新。

推荐的方法应与此类似:

handleChange(event) {
       this.setState(prevState => ({
          formData: {
            ...prevState.formData,[prevState.formData.propertyInformations.features.rooms]: e.target.value,},}));
    }
,

handleChange中的代码应该是这样

const updatedFormData = {...this.state.formData,propertyInformations : {
       ...this.state.formData.propertyInformations,property: {
           ...this.state.formData.propertyInformations.property,rooms: e.target.value
}}}

this.setState({ formData: updatedFormData })

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。