当前位置: 首页 > 知识库问答 >
问题:

ReactJS-将onClick函数的一部分作为来自父组件的道具传递

漆雕皓轩
2023-03-14

嘿,伙计们,我正在尝试从父级向子级组件传递道具中的命令。问题是,在我的按钮被点击后,父组件中的一个状态必须被改变,以打开预期的侧栏。我似乎对onClick函数末尾的.then()部分没有把握,因为我得到了错误:×未处理的拒绝(TypeError):无法读取未定义的属性“then”

子组件:

return (
          <div
            className="results-item"
            onClick={async () => {
              let place_detail;
              try {
                const URL = `https://maps.googleapis.com/maps/api/place/details/json?place_id=${places.place_id}&fields=name,rating,formatted_phone_number&key=
      MYAPIKEY`;
                const response = await axios.get(URL);
                console.log(response.data);
                place_detail = response.data.results;
              } catch (error) {
                console.log(error.message);
              }

              this.setState({ place_detail }).then(this.props.sideBarOpen);
            }}
          >
            <ResultsItem
              name={places.name}
              image={Thumbnail}
              rating={places.rating}
              rating_total={places.user_ratings_total}
            />
          </div>
        );

父组件:

<Search sideBarOpen={() => setOpen(!open)} />

共有2个答案

居焱
2023-03-14

不能在setState调用中使用。你可以使用setState的回调函数来做你想做的事情-

this.setState({ place_detail }, () => this.props.sideBarOpen());

方高丽
2023-03-14

setState不返回promise。使用回调代替:

this.setState({ place_detail }, () => {
   this.props.sideBarOpen();
});
 类似资料:
  • 我试图传递一个包装组件作为道具。在React中,这样的事情在技术上是可能的吗?

  • 问题内容: 可以说我有: 在Tabs组件内部,具有属性 儿童[0](this.props.children)看起来像 儿童[0]。道具看起来像 最终,Children对象看起来像(这是我想要传递的): 问题是这样,如果我这样重写MultiTab 在选项卡组件内部 看起来和上面一样。 好像 我希望该物业看起来像。上面只是打印出Statement函数。 这是一个很奇怪的问题,但是长话短说,我正在使用一

  • 我实际上正在学习reactjs,并且实际上正在开发一个小的TODO列表,包装在一个名为TODO的“父组件”中。 我决定将初始化移到componentDidMount内部,但这似乎是一个反模式,我需要另一个解决方案。你能帮我吗? 下面是我的实际代码:

  • 我试图从按钮类中的道具集中提取数字的值。然后在发现函数中呈现这个值。类正确显示了Number的值。但是,该函数不显示数字的任何值。 为了让它发挥作用,我已经花了一段时间来处理这个问题。但是我找不到任何解决我问题的办法。 没有错误消息。显示的预期结果:https://i.imgur.com/fr61SE0.png 实际显示结果:https://i.imgur.com/MRE0Lsj.png

  • 该父级接收“props.id”并将数据值传递给由getAttributes()返回的子级。 在child上,我可以在控制台和componentWillReceiveProps中看到props值,但数组没有呈现。我尝试使用react-devtool。在react-devtool中,道具似乎传递给了孩子,但不是渲染。有趣的是,在react-devtool中,当我改变数组的一些元素时,数组正在呈现。 我

  • 我正在使用react语义ui模态对象。打开模态的对象是一个道具。 我想在另一个组件中嵌入模态: 如何传递JSX代码(