Как передать параметр от дочернего к родительскому, используя функцию в реакции с синтаксисом es6 - PullRequest
0 голосов
/ 03 декабря 2018

У меня проблема с реакцией при передаче аргумента от дочерней к родительской функции.

Код родительского класса выглядит следующим образом

setWebSite = (website) => () => {
  console.log(1);
}

getWebsites = () =>{
        return (
            <div>
                <h2 className="text-center">Choose Website</h2>
                <div className="row">
                    {this.state.websites && this.state.websites.map((website)=>{
                        return (
                            <div className='col-sm-4' key={website._id}>
                                <SingleWebsite website={website} key={website._id} setWebSite={this.setWebSite}/>
                            </div>
                        )
                    })}
                </div>

            </div>
        )
};

И компонент дочернего класса выглядит следующим образом

const SingleWebsite = ({website,setWebSite})=>{
return (
  <span onClick={()=>{setWebSite(website.name)}}>
      <img  className="img img-responsive" style={{'width':'50%'}} src={'/images/'+ website.name +'.png'} />
  </span>
);

}

Функция setWebsite не вызывается, когда происходит отправка.Я знаю, что что-то не так с моей определяющей функцией setWebSite, но я не знаю, что это такое.Если я удаляю параметр, он вызывается.Любая помощь будет оценена

1 Ответ

0 голосов
/ 03 декабря 2018

Итак, вы сделали setWebSite функцией, которая возвращает функцию, которая записывает 1 в консоль.Таким образом, чтобы вызвать это, вы должны позвонить setWebsite(website.name)() из вашего дочернего компонента.Однако я не думаю, что это то, что вас интересует?

Вместо этого я думаю, что следующее решит вашу проблему

setWebSite = (website) => () => {
    console.log(1);
}

должно быть

setWebSite = (website) => {
  console.log(1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...