React.js中已弃用的setProps()有什么替代方法?

What's an alternative for the deprecated setProps() in React.js?

本文关键字:什么 方法 setProps js React      更新时间:2023-09-26

我刚刚将项目的React版本升级到13.3,setProps()不再工作。我在这个Mocha测试中使用它,我不确定现在如何重写它。我有什么选择?

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

在大多数情况下,React建议只重新呈现顶层组件,如果新呈现的是相同的组件类型,这实际上只是更新道具。由于TestUtils.renderIntoDocument只是创建DOM节点并对其进行常规渲染的快捷方式,因此类似这样的操作将起作用(我对测试的设置做了一些假设):

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