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;}