• 应用
    • 应用配置
    • 生命周期
  • 页面
    • 页面配置
    • 生命周期
    • 页面参数

    应用

    应用的默认入口文件为 src/app.js。不同于原生小程序中的 app.js,Remax 中的 app.js 是一个 React 组件。

    1. export default class App extends React.Component {
    2. render() {
    3. return this.props.children;
    4. }
    5. }

    所有页面组件都会以 App 子组件的方式渲染,所以你可以很方便的通过 Context 来进行数据共享。

    注意

    在 Remax 中使用 getApp 是获取不到 src/app.js 中定义的 App 组件的。 我们建议你忘记 getApp, 改用 Context 来共享状态。

    App 组件中必须渲染 props.children,且不支持写原生组件。

    应用配置

    应用配置通过 app.config.js 实现,对应原生小程序中的 app.json

    例如:

    1. // app.config.js
    2. module.exports = {
    3. window: {
    4. navigationBarTitleText: '这是一个标题',
    5. },
    6. };

    Remax 优先读取默认导出的配置,如果你开发的是多端共用的项目,则可以改为:

    1. // app.config.js
    2. const title = '这是一个标题';
    3. // 微信
    4. exports.wechat = {
    5. window: {
    6. navigationBarTitleText: title,
    7. },
    8. };
    9. // 支付宝
    10. exports.alipay = {
    11. window: {
    12. defaultTitle: title,
    13. },
    14. };

    Remax 会根据构建的目标平台自动选择配置。

    生命周期

    应用的生命周期可以直接写在 App 组件上。

    1. export default class App extends React.Component {
    2. // did mount 的触发时机是在 onLaunch 的时候
    3. componentDidMount() {
    4. console.log('App launch');
    5. }
    6. onShow(options) {
    7. console.log('onShow', options);
    8. }
    9. render() {
    10. return this.props.children;
    11. }
    12. }

    页面

    Remax 中的页面当然也是一个 React 组件。

    1. const IndexPage = () => {
    2. return <View>Hello world!</View>;
    3. };
    4. export default IndexPage;

    页面配置

    假设你的页面文件是 src/pages/index.js,那么这个页面的配置文件就是 src/pages/index.config.js

    app.config.js 一样,你可以默认导出一个配置,也可以为不同的平台导出不同的配置。

    1. module.exports = {
    2. navigationBarTitleText: '这是一个页面标题',
    3. };

    生命周期

    对于 class 组件的页面你可以直接在 class 上监听页面的生命周期。

    1. export default class IndexPage extends React.Component {
    2. // 页面组件的 didMount 触发时机是在 onLoad 的时候
    3. componentDidMount() {
    4. console.log('IndexPage load');
    5. }
    6. onShow() {
    7. console.log('IndexPage show');
    8. }
    9. render() {
    10. return <View>Hello world!</View>;
    11. }
    12. }

    对于函数组件的页面  我们提供了 hooks 来监听生命周期。

    1. import { useShow } from 'remax';
    2. export default () => {
    3. useShow(() => {
    4. console.log('onShow');
    5. });
    6. return <View>view</View>;
    7. };

    注意

    class 组件的生命周期回调只能用在页面组件上,但是 hooks 可以用在任意的组件上。

    页面参数

    Remax 将页面参数通过 props 传递给页面组件,如:

    1. export default props => {
    2. // 页面参数
    3. console.log(props.location.query);
    4. return <View>view</View>;
    5. };

    你也可以通过小程序原生的方式获取参数(通常在 onLoad 方法里获取),包括场景值也是。