Remax 应用的默认入口文件为 src/app.js
。不同于原生小程序中的 app.js
,Remax 中的 app.js
是一个 React 组件。
// src/app.jsexport default class App extends React.Component {render() {return this.props.children;}}
所有页面组件都会以 App
子组件的方式渲染,所以你可以很方便地通过 Context
来进行数据共享。
注意
在 Remax 中使用
getApp
是获取不到src/app.js
中定义的App
组件的。 我们建议你忘记getApp
, 改用Context
来共享状态。App 组件中必须渲染
props.children
,且不支持写原生组件。
应用配置通过 app.config.js
实现,对应原生小程序中的 app.json
。
例如:
// app.config.jsmodule.exports = {window: {navigationBarTitleText: '这是一个标题',},};
Remax 优先读取默认导出的配置,如果你开发的是一个跨平台的的项目,则可以改为:
// app.config.jsconst title = '这是一个标题';// 微信exports.wechat = {window: {navigationBarTitleText: title,},};// 阿里exports.ali = {window: {defaultTitle: title,},};
Remax 会根据构建的目标平台自动选择配置。
应用的生命周期可以直接写在 App
组件上。
export default class App extends React.Component {// did mount 的触发时机是在 onLaunch 的时候componentDidMount() {console.log('App launch');}onShow(options) {console.log('onShow', options);}render() {return this.props.children;}}
对于函数组件的 App, 可以通过 useAppEvent
hook 来监听生命周期
import { useAppEvent } from 'remax/macro';export default function App(props) {useAppEvent('onShow', () => {console.log('这个 hook 等同于 onShow');});useAppEvent('onShareAppMessage', () => {console.log('这个 hook 等同于 onShareAppMessage');});return props.children;}