【发布时间】:2019-08-14 17:29:58
【问题描述】:
假设我有一个这样定义的组件 -
// actioncomponent.js
import React from 'react';
class ActionComponent extends React.Component {
state = {
isAction: false;
}
doAction = () => {
this.setState({isAction: true})
}
render () {
return (
<div>
Some render stuff..
</div>
)
}
}
export default ActionComponent
从另一个完全不同的文件中,我想为第一个组件设置状态而不在新文件中渲染它,因此我不需要使用 refs 或 props。
// newfile.js
import ActionComponent from './actioncomponent.js'
ActionComponent.doAction()
我知道doAction 无法导出,并且调用它static 也无权访问状态。我如何实现这样的目标?
【问题讨论】:
-
该方法需要放在提供程序中并在两个组件之间共享
-
React 不希望你从外部更新状态。为了解决您的情况,我认为您需要将此状态“isAction”存储在其他地方(父组件、redux 状态、上下文等),而不是在此组件中,并通过道具将其传递给“ActionComponent”。
-
@vega 你的意思是 HOC 还是使用类似 redux 的东西?如果不是 redux,你能给我看一个示例代码吗?
-
@Doppio 我知道您所说的方法。然而,正如我所说,组件正在另一个页面上呈现,如果不遍历反应树,我就无法传递道具。
-
“组件在不同的页面呈现”这到底是什么意思?
标签: javascript reactjs class ecmascript-6