React JS如何在另一个功能组件的一个组件中设置状态

时间:2017-06-07 17:58:16

标签: javascript reactjs constructor callback

这绝对不是重复。

  1. 这个问题是一个React问题。这被认为是重复的问题是直接的JavaScript。

  2. 问题是我如何发送我的React功能,而不是我如何引用这个或任何特定于"这个"。

  3. 这实际上非常有用,因为它显示了如何在REACT中更新状态!从一个组件到另一个组件,允许更多功能组件,这对于提高效率非常有用!!!!

  4. 太不公平了。

    这绝对不是重复。

    请删除重复的标记!

    这是原始问题......

    我对我继承的一些代码有几个问题。我在内联网上工作所以我必须输入我要问的样本。

    第一个问题,我有一个"类"如下所示,它是JS类还是React类?我假设React ......

    import React from 'react';
    
    class SomeUtil {
      constructor() {
        this.doAbc = this.doAbc.bind(this)
      }
    
      doAbc(...){
        ...
      }
    }
    export default SomeUtil;
    

    我注意到没有super() - 我应该添加吗?

    第二个问题与创建类似的课程有关,但我无法按照自己的意愿开展工作。

    import React from 'react';
    
    class SomeOtherUtil {
      constructor(someCallback) {
    
        this.externalCallback = someCallback
    
        this.doXyz = this.doXyz.bind(this)
        this.doXxz = this.doXxz.bind(this)
        **//do i need to bind externalCallback here ?**
      }
    
      doXyz(...){
        this.externalCallback('hello world!')
      }
    
      doXxz(...){
        this.externalCallback('hello bob!')
      }
    }
    export default SomeOtherUtil;
    

    现在,当我使用SomeOtherUtil时,我想像这样使用它......

    //inside a React Component
    someRandomReactComponentMethod() {
      let myUtil = new SomeOtherUtil(this.someRandomCallback)
      myUtil.doXyz();
      myUtil.doXxz();
    }
    

    更新

    我发现了我的问题。我试图这样做......

    //inside a React Component
    someRandomReactComponentMethod() {
      let myUtil = new DataUtil(this.setState)
      myUtil.getThenSetData(...);
      myUtil.getAnotherWayAndSetData(...);
    }
    

    我不得不这样做......

    //inside a React Component
    someRandomReactComponentMethod() {
      let myUtil = new DataUtil((data)=>this.setState(data))
      myUtil.getThenSetData();
      myUtil.getAnotherWayAndSetData();
    }
    

    我仍然不相信这是上述问题的重复,但无论如何。

    感谢您回答有关JS class vs React类的第一个问题。希望我能投半票。 :)我不确定我的第一个问题因为在顶部导入反应,它会被编译成反应类或直接JS。现在我知道了。此外,在我使用JS对象的过去,我不得不使用原型来创建一个新实例。所以这让我感到困惑。

2 个答案:

答案 0 :(得分:1)

  

第一个问题,我有一个"类"如下所示,它是JS类还是React类?我假设React ......

React Components是扩展React.Component的JavaScript类。这个例子不是:它只是一个类,并不像它实现组件接口。

  

//我需要在这里绑定externalCallback吗?**

这取决于它的调用方式。例如,如果您正在响应click处理程序,那么您将要绑定它,以便处理程序的this值引用组件而不是单击的元素。

答案 1 :(得分:0)

首先:不,你的课程没有扩展任何课程,所以你不必打电话给super。我认为你会混淆像

这样的东西
class SomeComponent extends React.Component {
  constructor(props) {
    super(props)
    ...
  }
}

第二,取决于你想要的this上下文 - 如果你希望它是SomeOtherUtil那么是,你需要绑定它......但你可能没有。