class App extends Component与其他js文件的相互调用问题

问题

在开发基于reactnative框架的app时,在js层中进行多个js文件之间的相互调用问题,基本上普通js文件相互调用没什么问题,直接引用即可。但是当遇到extends Component时,就发生了不可引用的问题,而写的demo也不会报错,仅仅时不执行或没效果

调试

代码说明:主js为app.js

class App extends Component {
	constructor(props) {
       	 super(props);
       	 ...
	}
....
}
export default App;

次js为SupTools .js

class SupTools { {
	constructor(props) {       	
       	 ...
	}
....
}
module.exports = new SupTools();

方案一:
修改各自对应的 exports ;发现无效果或产生其他的问题

app.js 修改
原始为:export default App;
修改为:
1.module.exports = new App();  //影响其主要功能,直接导致apk不可使用
2.module.exports = App;  //不影响apk运行,但不可实现互相调用功能

SupTools .js 修改
原始为:module.exports = new SupTools();
修改为:
1.export default SupTools;  //不影响apk运行,但不可实现互相调用功能
2module.exports = SupTools; //不影响apk运行,但不可实现互相调用功能

方案二:
将SupTools .js修改为类似app.js类型,不影响apk运行,但不可实现互相调用功能

class SupTools extends Component {
	constructor(props) {
       	 super(props);
       	 ...
	}
....
}
export default SupTools ;

分析

通过在网上查找发现该问题主要集中在ES6的 Component 的使用上
在两个js中的通信采用两种方式
1.父子间通信就是通过props属性来传递, 在父component中给子component设置props,然后子component就可以访问到父component的数据和方法.
2 非父子间通信使用全局事件Pub/Sub模式,在componentDidMount里面订阅事件,在 componentWillUnmount里面取消订阅,当收到事件触发的时候调用setState更新UI。

解决

方式1:确实是可以进行使用,按调试中的方案二处理SupTools .js,且对其中的组件进行处理,发现确实可行,但是与个人的实际应用有差异,且处理起来不方便
方式2:就是通过事件方式进行通信,该方式确实可行

最后

由于对ES6的了解比较片面,目前可用的方式就是采用事件方式进行通信,但个人依旧觉得不太方便且怪异,与Java相比这个方式太不方便了。
后续有时间在尝试看看有没有更简便方式处理。

参考链接: component基本用法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值