@uzi_no_uzi

Как передать функуцию, которая ожидает аргументы в другой компонент?

Сделал простой пример, правильно ли я передаю функцию дочернему компоненту?

В моем реальном проекте это почему-то не работает, хотя я передаю по такой схеме: родительский компонент => дочерний => еще один дочерний

import React from 'react';

class Component1 extends React.Component {
  constructor() {
    this.func = (category) => {
      //do something
    }
  }
  
  render() {
    <Component2 onOpen={this.func} />
  }
}


class Component2 extends React.Component {
  constructor() {

  }
  
  render() {
    <div onClick={() => {this.props.onOpen('web')}}> </div>
  }
}
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
MrDecoy
@MrDecoy
Верставший фронтендер
Пропустили передачу props в конструктор, вызов super(props), метод объявляется немного иначе и пропустили return в render.
Не проверял на работоспособность, но должно быть как-то так:
import React from 'react';

class Component1 extends React.Component {
    constructor(props) {
        super(props);
        this.func = this.func.bind(this);
    }

    func(name) {
        console.log(`I am ${name}`);
    }

    render() {
        return ( <Component2 onOpen = {this.func}/>)
    }
}


class Component2 extends React.Component {
    constructor(props) {
        super(props);
    }

    render() {
        return (
            <div onClick={() => {this.props.onOpen('Groot')}}> Who am i ? </div>
        )
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы