2016-03-04 19 views
7

Trong khi làm việc với Phản ứng Native, tôi có một vài thành phần được đẩy trên đầu trang của mỗi khác, một số trong đó thay đổi trạng thái của các thành phần bên dưới họ, như vậy:Làm cách nào để làm mới trạng thái React sau khi chạy navigator.pop()?

Xã hội -> Groups -> Add Group

Tuy nhiên, khi tôi chạy navigator.pop() để quay lại thành phần trước đó (ví dụ: sau khi thêm nhóm vào tài khoản của người dùng), thành phần bên dưới (trong trường hợp này là 'Nhóm') sẽ không làm mới với trạng thái mới nhất .

Tôi đang làm gì sai ở đây?

+0

Tôi không nghĩ rằng điều này liên quan đến hoa tiêu. Bạn cần phải thay đổi trạng thái của thành phần hàng đầu bằng sẽ kích hoạt một số dư. –

Trả lời

3

Hóa ra tôi đã có thể giải quyết việc này bằng cách chèn một componentWillUpdate trên thành phần 'Nhóm', có nghĩa là, bất cứ khi nào các nhóm thành phần cập nhật, nó gây nên một hàm loadGroupsData:

componentWillUpdate() { 
    this.loadGroupsData(); 
} 

... mà hàm loadGroupsData kiểm tra bất kỳ sự khác biệt nào và nếu có, nó sẽ tải:

loadGroupsData() { 
api.getUserGroups(this.state.userId, (data) => { 
    data.forEach((group, index) => { 
    group.groupname = group.groupname; 
    }); 
    if (this.state.dataSource._cachedRowCount === undefined || this.state.dataSource._cachedRowCount !== data.length) { 
    this.setState({ 
     usersGroups: data.map(data => data.groupname), 
     dataSource: this.state.dataSource.cloneWithRows(data), 
     loaded: true, 
    }); 
    } 
});} 
+3

Tôi không nghĩ bạn có thể setState trong hàm componentWillUpdate. Các tài liệu bản địa phản ứng nói. Lưu ý: Bạn không thể sử dụng this.setState() trong phương thức này. Nếu bạn cần cập nhật trạng thái để phản hồi thay đổi chống thay thế, hãy sử dụng componentWillReceiveProps thay thế. https://facebook.github.io/react/docs/component-specs.html –

+1

nhận các cuộc gọi vô tận nếu tôi đặt setState trên componentWillUpdate, bất kỳ ý tưởng nào về cách ngăn chặn điều này? – jatazoulja

Các vấn đề liên quan