Spec-Zone.ru › Enzyme

.renderProp(propName)(...args) => ReactWrapper

Возвращает функцию, которая, когда вызывается с аргументами args, вернёт новый обертка, основанный на render prop в оригинальном свойстве обёртки propName.

ПРИМЕЧАНИЕ: может быть вызван только на обёртке одного отдельного элемента узла компонента, не являющегося DOM.

Аргументы

  1. propName (String):
  2. ...args (Array<Any>):

Это по существу вызывает wrapper.prop(propName)(...args).

Возвращает

ReactWrapper: Новая обёртка, которая оборачивает узел, возвращённый из render prop.

Примеры

Настройка теста
class Mouse extends React.Component {
  constructor() {
    super();
    this.state = { x: 0, y: 0 };
  }

  render() {
    const { render } = this.props;
    return (
      <div
        style={{ height: '100%' }}
        onMouseMove={(event) => {
          this.setState({
            x: event.clientX,
            y: event.clientY,
          });
        }}
      >
        {render(this.state)}
      </div>
    );
  }
}

Mouse.propTypes = {
  render: PropTypes.func.isRequired,
};
const App = () => (
  <div style={{ height: '100%' }}>
    <Mouse
      render={(x = 0, y = 0) => (
        <h1>
          The mouse position is ({x}, {y})
        </h1>
      )}
    />
  </div>
);
Тестирование без аргументов
const wrapper = mount(<App />)
  .find(Mouse)
  .renderProp('render')();

expect(wrapper.equals(<h1>The mouse position is 0, 0</h1>)).to.equal(true);
Тестирование с несколькими аргументами
const wrapper = mount(<App />)
  .find(Mouse)
  .renderProp('render')(10, 20);

expect(wrapper.equals(<h1>The mouse position is 10, 20</h1>)).to.equal(true);

© 2015 Airbnb, Inc.
Licensed under the MIT License.
https://enzymejs.github.io/enzyme/docs/api/ReactWrapper/renderProp.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API