我如何将此功能从 app.js 移出?
How can i move this function out from app.js?
我打算从我的 app.js 中移出逻辑。现在,在 app.js 中,我有一个函数可以更改 App.js 中某些变量的状态。我想通过让 app.js 调用另一个组件中的函数(例如单击)来了解更改 app.js 内状态的正确方法。
我的 app.js 如下所示:
const App = () => {
const [opacity, opacitySet] = React.useState(1);
const [showStep, setDisplayStep] = React.useState(true);
const [isQrActive, setQrState] = React.useState(false);
/** code **/
<ButtonContinue
onClick={() => {
stateChanger();
}}
style={{ backgroundColor: "black" }}
>
<p>cancel</p>
</ButtonContinue>
/** lots of code **/
function stateChanger() {
opacitySet(0);
setTimeout(() => {
opacitySet(1);
setDisplayStep(!showStep);
setQrState(!isQrActive);
}, 400);
}
/** and more code **/
}
我想将 stateChanger 函数从 app.js 移出,但仍保留相同的功能。这反过来又可以让我轻松地从其他 类 调用 stateChanger。
最简单的解决方案(也是最难扩展的)是将函数作为 prop 传递给它的 children。您还可以创建自定义挂钩。但是通过在 root-level 组件 App 上声明状态并询问您通常如何从另一个组件修改它,我们可以解释这个问题本质上是关于如何处理全局状态的。您可能需要考虑使用 Context API 或 Redux,它们是专门为此目的创建的工具。
这里要记住的最重要的事情是,如果我们可以选择将状态保持在合理接近它被使用和修改的位置,我们应该这样做而不是将其作为全局状态的一部分处理。
我打算从我的 app.js 中移出逻辑。现在,在 app.js 中,我有一个函数可以更改 App.js 中某些变量的状态。我想通过让 app.js 调用另一个组件中的函数(例如单击)来了解更改 app.js 内状态的正确方法。
我的 app.js 如下所示:
const App = () => {
const [opacity, opacitySet] = React.useState(1);
const [showStep, setDisplayStep] = React.useState(true);
const [isQrActive, setQrState] = React.useState(false);
/** code **/
<ButtonContinue
onClick={() => {
stateChanger();
}}
style={{ backgroundColor: "black" }}
>
<p>cancel</p>
</ButtonContinue>
/** lots of code **/
function stateChanger() {
opacitySet(0);
setTimeout(() => {
opacitySet(1);
setDisplayStep(!showStep);
setQrState(!isQrActive);
}, 400);
}
/** and more code **/
}
我想将 stateChanger 函数从 app.js 移出,但仍保留相同的功能。这反过来又可以让我轻松地从其他 类 调用 stateChanger。
最简单的解决方案(也是最难扩展的)是将函数作为 prop 传递给它的 children。您还可以创建自定义挂钩。但是通过在 root-level 组件 App 上声明状态并询问您通常如何从另一个组件修改它,我们可以解释这个问题本质上是关于如何处理全局状态的。您可能需要考虑使用 Context API 或 Redux,它们是专门为此目的创建的工具。
这里要记住的最重要的事情是,如果我们可以选择将状态保持在合理接近它被使用和修改的位置,我们应该这样做而不是将其作为全局状态的一部分处理。