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

React将函数传递给子父级而不是重新呈现

王兴腾
2023-03-14

我有以下功能:

update() {
    this.currentItem = [];
    //...Populate currentItem

    this.setState({
      currentItem
    });
  }

在页面上呈现如下;

render() {
   const { currentItem } = this.state;
   return {currentItem}
}
<Component
   update={this.update.bind(this)}
/>
let { update } = this.props;
if (typeof update === "function")
  update();

我已经尝试了forceUpdate,但它也没有重新呈现组件--我遗漏了什么?

共有1个答案

谢洛城
2023-03-14

尝试避免这样做。forceUpdate(),因为这不会触发shouldComponentUpdate(),这是React中组件的性能挂钩。因为,我看到您正在将您的状态传递给子组件,并试图从那里更新父级状态对象,这违反了法律。您应该在父组件中创建一个方法,并将该方法作为道具传递给子组件。应该是这样的

constructor(props) {
    super(props);
    this.state = { loading: false };
    this.update = this.update.bind(this);
}
update(newState) {
    this.setState({loading: newState })
}
render() {
    return <ChildComponent update={this.update} />
}
 类似资料:
  • 问题内容: 在组件中,我需要将函数的返回值传递给属性。然后从属性需要被传递到的组件。新来的反应。不确定如何将属性从子级传递到组件。 问题答案: 您可以将函数从父级传递给子级,子级可以使用颜色调用该函数(很多操作都类似于事件处理程序)。在App中收到颜色后,使用.setState()将其分配给状态值,然后将其在render()中获取

  • 我试图将一些信息从子项中的输入字段传递给父项。 到目前为止我所掌握的是: 34 this.setstate({searchstring:event.target.value},()=>{ >35 this.props.onchild(this.state.SearchString); 希望有人能帮忙。顺便说一句,我是个小人...

  • 问题内容: 我已经在子组件的窗体上创建了。使用jquery ajax方法提交该表单后,我将以json格式检索一些数据。我想将该数据置于父组件的状态。那么,react.js中是否有任何方法可以将值或数据从子组件传递到其父组件? 谢谢.. 问题答案: 在没有某种Flux实现的情况下执行此操作的方法是在父元素上创建一个函数来处理来自子级的响应/数据,并将该函数作为道具传递。然后从孩子那里调用该函数。像这

  • 问题内容: 我想将功能传递给子组件,但出现此错误。 基本上是我想做的。 var ReactGridLayout = require(’react-grid-layout’); 似乎它是在React v16中引入的。因此,将函数从父代传递给子代的正确方法是什么? 问题答案: 我发现出了什么问题。这是因为react-grid-layout。我必须将其余的属性传递给孩子。

  • 问题内容: 这是我的代码: 当我评估f(0)时,将出现错误“ x在分配之前被引用”。 但是,当我使用“ print x”代替“ x = x + 1”时,它将起作用。 似乎在g的范围内,我只能将x用作“使用事件”,而不能用作“绑定事件”。我想问题是f仅将x的值传递给g。 我是否正确理解?如果不是,有人可以解释为什么在引用之前未定义“ x = x + 1”的左侧吗? 谢谢 问题答案: 您正确理解了它。

  • 问题内容: 这个问题已经在这里有了答案 : 循环内的JavaScript封闭-简单的实际示例 (44个答案) 4年前关闭。 这是我尝试运行的内容的简化版本: 但是我发现每个侦听器都使用result.length的值(for循环终止时的值)。如何添加侦听器,以使每个侦听器在添加i时都使用i的值,而不是对i的引用? 问题答案: 在现代浏览器中,您可以使用或关键字创建一个块作用域变量: 在较旧的浏览器中