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

使用refs reactJS with styles[duplicate]调用嵌套子方法

丁毅庵
2023-03-14

我试图访问一个方法在嵌套的Chilld组件使用ref。这是删除嵌套删除组件中的数据。我的代码如下(简化代码):

父类:

class Parent extends Component {
  constructor(props) {
    this.childref = React.createRef()
    props.refs(this)
  }
  render() {
    const elements = return [
     <div onclick={this.callsupprimer(0)} />,
     <div onclick={this.callsupprimer(1)} />
    ]
    return (
      <Fragment>
        <Child refs={ref => this.childref = ref>
        </Child>
       loadToolData()
     </Fragment>
     )
  }
  callsupprimer = index => this.childRef.GrandChildRef.supprimer(index)
}
 export withStyles(styles)(Parent)

儿童班:

class Child extends Component {
  constructor(props) {
    this.grandchildref = React.createRef()
    props.refs(this)
  }

  render() {
    return (
      <GrandChild refs={ref => this.grandchildref = ref>
      </GrandChild>
    )
  }
}
 export withStyles(styles)(Child)

孙辈阶级:

class GrandChild extends Component {

  supprimer = (index) => {
        console.log(index)
        this.forceUpdate()
  }
  render() {
    return (
      //blah blah blah
    )
  }
}
export withStyles(styles)(GrandChild)

但是,我无法让Supplier方法在这个孙子上下文中调用更改。该方法被调用,但调用方式很奇怪。

当组件被加载并打印索引时,它会被调用一次,但是它不工作!!!我甚至没有在孙子类中调用这个方法。请帮忙。

更新:除了现在的方法名之外,代码与编写的代码完全相同。

共有1个答案

慕铭
2023-03-14

问题是,我在渲染时调用了allsuprimer,而它应该只在onClark上完成,所以在渲染时调用了一次方法,之后就不起作用了。一旦我将父类中的on点击更改为箭头函数回调:

<div onclick={() => this.callsupprimer(1)} />

它像预期的那样工作。

注意:当对样式使用时,需要使用refs,而不是ref,然后在子组件中绑定this,如问题所示。我不需要使用current@Hai Alaluf在问题中的评论为我指明了正确的方向!

 类似资料:
  • 问题内容: 我有四个让我们说A,B,C,D的类,每个类都从另一个调用方法。 现在我已经模拟了类A,并且想模拟使用嘲笑的方法 并希望在递归方法调用上获取“ foo” 应该回来 我试过了 when(a.getB()。getC()。getD())。thenReturn(“ foo”); 但是得到了nullPointerException 然后我尝试 doReturn(“ foo”)。when(a.get

  • 我有4个类让说A,B,C,D,每一个调用的方法从另一个。 现在我已经模拟了类A,并想使用mockito模拟一个方法 但得到nullPointerException 然后我试着 doReturn(“foo”).When(A.getb().getc().getd()); 但我不能一次就做到吗?如有任何帮助,我们将不胜感激。

  • Spring AOP可以很好地处理通过接口公开的方法。Spring AOP通过目标类@EnableAspectJAutoProxy(ProxyTargetClass=true)在代理上提供了一个选项

  • 我对ScalaMock和嘲笑都是新手。我试图测试一个方法,它调用另一个(mocked)类中的方法,然后在返回的对象上调用方法。 详细资料: 所以我使用ScalaTest,这个测试涉及到五个类... 我正在测试的子指令 在测试中必须被嘲笑的机器 构造机器对象所需的寄存器 我创建为原始机器类的MockableMachine没有空构造函数,因此(据我所知)无法模拟 最后是我的测试类SubInstruct

  • 我有两个部分。一个子组件,它有两个,由来自另一个组件的DOM填充。我在另一个父组件中使用此组件。 我想要的是当我单击父组件中的元素时关闭组件。 超文本标记语言 JS 这是小提琴:https://jsfiddle.net/eywraw8t/19300/

  • 我被困在将嵌套JS与宇宙数据库核心SQL API集成上。我知道有一个用于 Cosmos DB 的模块(https://github.com/nestjs/azure-database),但我需要数据架构来支持嵌套的 json,如下所示: 我认为@nestjs/azure-database不支持这一点(或者我可能错了),因为当我检查他们的示例和quickstart时,没有这样的json模式的示例。