Каким способом лучше отправлять ссылки на функции для реагирующих компонентов? - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь отправить ссылку на функцию импортированному компоненту. Так что лучше использовать атрибут ref или реквизит?

Я хочу найти оптимальный и стандартный метод.

<MyComponent ref="ListView" />

Или этот метод:

<MyComponent show="this.showModal" hide="this.hideModal" />

Ответы [ 4 ]

0 голосов
/ 29 августа 2018

Вы хотите отправить обработчик событий на дочерний компонент от родительский , если я правильно понимаю ваш вопрос?

parent.js

class ParentComponent extends Component {

  handler = () => {
     console.log("handler click">
  }

  render() {
    return (
      <div>
         <Child handler={this.handler} />
      </div>
    );
  }

}

child.js

const Child = ({ handler }) => (
  <Button onClick={handler} />
)
0 голосов
/ 29 августа 2018

EDIT: Я понял ваш вопрос: если у вас есть много методов, которые вы можете использовать ... реквизиты, но вы также можете передавать реквизиты как отдельные методы.

Я думаю, что вы имеете в виду различия между контролируемыми и неконтролируемыми компонентами: uncontrolled- https://reactjs.org/docs/uncontrolled-components.html контролируемым https://reactjs.org/docs/forms.html

Ответ на этот вопрос зависит от "логики" вашего компонента, если вы хотите управлять им с помощью DOM (используя ссылки) или самим компонентом.

0 голосов
/ 29 августа 2018

Мы не используем ссылки для обработки событий, предпочтительно передавать обработчики как реквизиты дочернему компоненту, используя синтаксис JSX с {} фигурными скобками.

0 голосов
/ 29 августа 2018

Эффект не будет, если вы передадите функции в виде строки (например, "this.showModal").

Передайте их в фигурных скобках:

<MyComponent show={this.showModal} hide={this.hideModal} />

Цель ссылки - манипулировать DOM напрямую, а не передавать что-либо компоненту. Например, вы можете манипулировать DOM с помощью jQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...