You need to enable JavaScript to run this app. JavaScript:如何在其他JS文件中调用函数内部的aPrice、bPrice变量
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript:如何在其他JS文件中调用函数内部的aPrice、bPrice变量

问题场景

我在 index.Js 文件中编写了如下代码:

const toto = ({tokenMode = false}) => {
const bPrice = usePriceB();
const aPrice = usePriceA();

return (
        <SectionWrapper
            section={{
                title: tokenMode ? 'Pools' : 'Farming',
                id: tokenMode ? 'pools' : 'farming',
                cards: generateCards().slice(0, 3),
            }}
        >
            <Card cards={generateCards().slice(0, 3)} ethereum={window.ethereum}/>
        </SectionWrapper>
    );
}
export default toto;

具体疑问

我该如何在其他 .js 文件中调用 aPrice 和 bPrice 这两个变量?
补充说明:已在代码中补上该函数的完整返回逻辑。


解决思路

当前代码里的 aPrice 和 bPrice 是定义在 toto 函数内部的局部变量,受JS函数作用域限制,外部文件本身无法直接访问。这两个值本质是通过React自定义Hook usePriceA、usePriceB 获取的价格数据,可以通过以下合规方案实现跨文件调用:

  • 直接复用底层自定义Hook(推荐方案)
    这是最符合React开发规范的实现方式。aPrice 和 bPrice 的值本来就是从对应自定义Hook返回的,完全不需要经过toto函数做中转:
    1. 先定位 usePriceA、usePriceB 两个Hook的定义文件,确认其导出方式
    2. 在需要使用价格值的其他js文件中,严格遵循Hook使用规则(仅在函数组件或其他自定义Hook内部调用),直接引入并调用这两个Hook,就能拿到和toto内部完全一致、实时同步的价格值
    // 其他js文件内的示例代码
    import { usePriceA, usePriceB } from '对应Hook的文件路径'
    
    const DemoModule = () => {
      const aPrice = usePriceA()
      const bPrice = usePriceB()
      // 后续逻辑可直接使用这两个变量
    }
    
  • 不建议的实现路径
    不要为了图方便在toto函数内部把两个变量挂到全局对象上(比如 window.aPrice = aPrice),这种写法会直接丢失自定义Hook的响应式特性,无法拿到价格的实时更新值,还会造成全局变量污染,后续维护成本极高。
    如果你确实没有权限复用底层的两个价格Hook,也可以通过组件props逐层透传的方式,把toto内部的价格值传给需要使用的子组件,但这种方式会增加大量不必要的组件传参层级,长期维护成本更高。

内容的提问来源于stack exchange,提问作者devBsc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 20:57:06