2015-07-13 17 views
6

Tôi vừa nâng cấp phiên bản React của dự án lên 13.3 và setProps() không còn hoạt động nữa. Tôi đang sử dụng nó trong bài kiểm tra Mocha này và tôi không chắc chắn làm thế nào để viết lại nó ngay bây giờ. Những lựa chọn của tôi là gì?Giải pháp thay thế cho setProps không được chấp nhận() trong React.js là gì?

it('reloads search results when props change ', function() { 
    var loadResultsSpy = sinon.spy(searchView, 'loadSearchResults'); 
    var newProps = {searchBy: 'foo', searchTerm: 'bar'}; 
    searchView.setProps(newProps); 
    expect(loadResultsSpy.calledWith(newProps.searchBy, newProps.searchTerm)).toBe(true); 
    }); 

Trả lời

6

Trong trường hợp chung nhất, React khuyên bạn chỉ cần tăng lại thành phần cấp cao nhất, về cơ bản chỉ cập nhật đạo cụ nếu hiển thị mới có cùng loại thành phần. Kể từ TestUtils.renderIntoDocument chỉ đơn giản là một phím tắt cho creating a DOM node and doing a regular render into it, một cái gì đó như thế này sẽ làm việc (Tôi đang làm cho một số giả định về việc thiết lập các bài kiểm tra của bạn):

var searchView, div; 

beforeEach(function() { 
    var comp = <SearchView searchBy="baz" searchTerm="quix" />; 
    div = document.createElement('div'); 
    searchView = React.render(comp, div); 
}); 

it('reloads search results when props change', function() { 
    var loadResultsSpy = sinon.spy(searchView, 'loadSearchResults'); 
    var comp = <SearchView searchBy="foo" searchTerm="bar" />; 
    React.render(comp, div); 
    expect(loadResultsSpy.calledWith("foo", "bar")).toBe(true); 
}); 
+1

Cảm ơn cho việc này. Trên các phiên bản mới hơn của React, người dùng sẽ cần 'ReactDOM.render' thay vì' React.render'. –

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