2017-08-19 20 views
5

Tôi có ứng dụng React/Mobx. Khi tôi thực hiện thay đổi trong cửa hàng, thành phần đang cập nhật (tái kết xuất), nhưng tôi cần thực hiện một số so sánh để thêm một số chức năng khác, vì vậy tôi muốn sử dụng componentWillReceiveProps (nextProps) và so sánh nextProps với this.props. Bằng cách nào đó nó không được gọi. Bất kỳ ý tưởng, những gì tôi đang làm sai, hoặc những gì khác tôi có thể làm, để có được điều đó?React/Mobx - thành phần đang hiển thị lại, nhưng componentWillReceiveProps() không được gọi là

+0

dán mã của bạn tại đây, vui lòng –

+0

Xem xét điều này: https://github.com/mobxjs/mobx-react/issues/281 – robertklep

+2

Và cụ thể trên lời giải thích ** tiết niệu **. https://github.com/mobxjs/mobx-react/issues/281#issuecomment-309410018 – felixmosh

Trả lời

1

tl; dr: sử dụng componentWillUpdatecomponentDidUpdate


Đối tượng cửa hàng thông qua như là một chỗ dựa không bao giờ thay đổi, ngay cả khi có thay đổi nội dung của nó. Bí quyết sử dụng @observable là nó sẽ kích hoạt cập nhật trong thành phần mà không thay đổi các đạo cụ. Vì vậy, sử dụng các chức năng vòng đời như shouldComponentUpdate, componentWillReceiveProps và componentDidReceiveProps sẽ không hoạt động vì chúng được kích hoạt khi thay đổi của đạo cụ hoặc trạng thái của thành phần. Tài liệu mobx giải thích rõ trong phần shouldComponentUpdate.

Vì vậy, để nắm bắt cập nhật trong một quan sát, chúng ta phải đi sâu hơn một chút trong ngăn xếp vòng đời và sử dụng componentWillUpdatecomponentDidUpdate.

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