2015-07-13 6 views
6

Właśnie zaktualizowałem wersję React mojego projektu do wersji 13.3, a setProps() już nie działa. Używam go w tym teście mokki i nie jestem pewien, jak go teraz przepisać. Jakie są moje opcje?Co to jest alternatywa dla przestarzałych funkcji setProps() w pliku React.js?

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); 
    }); 

Odpowiedz

6

W najbardziej ogólnym przypadku, React zaleca po prostu ponownie rozdzierające składnik najwyższego poziomu, który w zasadzie tylko aktualizuje rekwizyty jeśli nowa renderowanie jest tego samego rodzaju elementów. Od TestUtils.renderIntoDocument to po prostu skrót dla creating a DOM node and doing a regular render into it, coś jak to będzie działać (robię pewne założenia dotyczące konfiguracji swoich testów):

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

Dzięki za to. W nowszych wersjach React, będzie trzeba 'ReactDOM.render' zamiast' React.render'. –