所有组件所需的存储方法

时间:2018-06-20 13:05:54

标签: javascript reactjs

我有一个为学习目的而开发的通用应用程序。我正在使用Redux管理应用程序的状态,因此所有数据都可以在其中使用。但是我想创建一些将在所有组件中使用的方法。问题是:我应该在哪里存储此方法?

将它们添加到父组件并将方法作为prop传递似乎不是很有用,因为这是Redux试图解决的事情之一。而且我非常确定Redux不是存储方法的地方。

我知道我可以在某个地方的文件中创建一个类,将其导出,向其中添加一些方法,当我想在组件中使用一个方法时,可以调用此文件,创建该类的实例并调用所需的方法;但这对我似乎反应不大...

是否有正确的方法来创建可用于所有组件的方法?

1 个答案:

答案 0 :(得分:0)

我已经使用类似于下面的方法在组件之间成功共享了一些功能。我不确定这种方法能否解决您关于Cookie的特定用例。

这些功能可以存储在任何地方,也可以在需要时导入。他们接受组件作为第一个参数,然后返回对传入的组件进行操作的函数。

后面是未经测试的指示性代码。

// An event handler than can be shared between multiple components
const handleChange = component => event => component.setState({ value: event.target.value });

class ComponentOne extends PureComponent {
  state = {};
  render() {
    return (
      <div>
        {this.state.value}
        <input onChange={handleChange(this)} />
      </div>
    );
  }
}

class ComponentTwo extends PureComponent {
  state = {};
  render() {
    return (
      <div>
        {this.state.value}
        <input onChange={handleChange(this)} />
      </div>
    );
  }
}