鍍金池/ 問(wèn)答/Linux  HTML/ react父組件引用了子組件多次,怎么讓傳入子組件的props保持獨(dú)立

react父組件引用了子組件多次,怎么讓傳入子組件的props保持獨(dú)立

假如我有這樣一個(gè)組件

import React, {Component} from 'react';

class InputTest extends Component {
    constructor(props) {
        super(props);

        this.state = {
            fillok: true
        };
    }

    render() {
        return (
            <input />
        );
    }
}

export default InputTest;

我在一個(gè)組件中引用了多次上面的組件

import React, {Component} from 'react';

class componentName extends Component {
    render() {
        return (
            <div>
                <InputTest {...this.state} />
                <InputTest {...this.state} />
            </div>
        );
    }
}

export default componentName;

我想知道在父組件中通過(guò)props的形式給組件傳遞state 怎么讓子組件中獲取的props是獨(dú)立的,他們之間互不影響。

我在這里遇到的情況是,在其中一個(gè)InputTest組件中操作state會(huì)影響另外一個(gè)InputTeststate

另外再補(bǔ)充一個(gè)問(wèn)題。this.setState的更新是異步的。父組件按照{(diào)...this.state}傳入子組件的props難到拿到的值也是異步的么。(我的意思就是子組件通過(guò)props拿到的值是不是父組件已經(jīng)更新完的值)?

回答
編輯回答
解夏

1.一種方式是在子組件的構(gòu)造函數(shù)里把props用state緩存起來(lái),這樣的話會(huì)導(dǎo)致父組件的屬性更新了,子組件沒(méi)有更新,這個(gè)時(shí)候需要結(jié)合componentWillRecieveProps函數(shù)處理
2.把父組件傳給子組件的屬性分開(kāi),各個(gè)子組件的屬性相互獨(dú)立

2017年3月28日 22:05
編輯回答
淡墨

就算引用多次子組件,但是傳給子組件的值也不是同一個(gè)吧?你這樣是把父組件的所有state都傳給了子組件,他們拿到的都是一樣的東西,那顯示出來(lái)能不是一樣的嗎 ? 就像一個(gè)函數(shù),每次都是傳遞一樣的參數(shù)進(jìn)去,返回的不都是一樣的嗎?
想要不被影響那么

<InputTest {...this.state.a} />
<InputTest {...this.state.b} />

就是不能把同一個(gè)值傳遞進(jìn)去

2018年9月18日 02:23