react native 組件間通訊 局部重新整理

來源:互聯網
上載者:User

組件化是react-native的最大優點之一,因為組件化我們可以做到局部重新整理,提高效能。

如圖所示 父組件包含連個子組件 添加可以動態增加子組件



log輸出:


add關鍵代碼:

_onPress() {        if(show){/*顯示刪除時 不能添加*/           return ;        }        let arr = this.state.list;        arr.push(this._renderItem());        this.setState({            list: arr,        });    };    _renderItem() {        count = this.id+1;        this.id = count;        return (<CeilItem ref={(component)=>{                this.reflist.push(component)            }}                          id={count}                          onChildHanlder={this.onChildHanlder}            >            </CeilItem>        );    }


點擊show動態更新子組件 但不重新整理父組件 

如下所示:


log:


只重新整理了子view 沒有重新整理父view

show關鍵代碼:

父組件:

  /*改變item布局*/    _show(){        show = show?false:true;        for(let i=0;i<this.reflist.length;i++){            this.reflist[i].change(show);        }    }    onChildHanlder(inputId){        let len = this.reflist.length;        for(let i=0;i<len;i++){            let id=this.reflist[i].props.id;            if(inputId==id){                del++;                console.log("delete i: ",i);                this.reflist[i].delete();            }        }        /*全部刪除後才可以添加*/        show = del==count?false:show;    }

子組件代碼:

  change(flag){        this.setState({flag:flag});    }    delete(){        this.setState({delete:true});    }    hide(){        let centerPart_right = 0;        let rightPart_width = 0;        return (<View style={styles.Item}>            <View style={styles.leftPart}>            </View>            <View style={[styles.centerPart, {marginRight:centerPart_right}]}>            </View>            <View style={[styles.rightPart,{width:rightPart_width,position:'absolute', right:0}]}>            </View>        </View>);    }    show(){        let id=this.props.id;        let onChildHanlder=this.props.onChildHanlder;        let centerPart_right =  70;        let rightPart_width = 60;        return (<View style={styles.Item}>            <View style={styles.leftPart}>            </View>            <View style={[styles.centerPart, {marginRight:centerPart_right}]}>            </View>            <View style={[styles.rightPart,{width:rightPart_width,position:'absolute', right:0},{justifyContent:'center', alignItems:'center'}]}>                <TouchableOpacity onPress={()=>{onChildHanlder(id)}}>                    <Text style={[styles.textStyle]}>                        del                    </Text>                </TouchableOpacity>            </View>        </View>);    }

github完整代碼: https://github.com/wuyunqiang/react-/tree/master/test/view


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.