可以。
不可以。
小程序中没有 DOM,无法使用基于 React DOM 的 UI 库。
Remax 支持直接使用原生组件库。具体请参考 小程序自定义组件。
支持。
具体可参考 跨平台开发。
如果使用了 Redux 的 connect ,请将 connect 的 option.forwardRef 设置为 true文档。其它第三方库的高阶组件的处理方式也类似。原因如下。
对于使用 class 组件的页面,Remax 会通过 ref 获取页面生命周期。当页面组件被高阶组件(有时被称为 HOC)包裹时,通过 ref 取得的是 HOC 最外层的容器组件,而不是被包裹的组件 。我们需要 React.forwardRef
将 ref 转发到内部组件。
import React, { forwardRef } from 'react';import { View } from 'remax/ali';class IndexPage extends React.Component {onReady() {console.log('onReady被调用');}render() {return <View>这是一个例子</View>;}}// HOC 的容器是一个函数式组件const HOC = Component => {const Wrapped = (props, ref) => {// 一些高阶组件的逻辑return <Component {...props} ref={ref} />;};return forwardRef(Wrapped);};// 另一种情况,HOC 容器是一个 class componentconst ClazzHOC = Component => {class Wrapped extends React.Component {// 另一些高阶组件的逻辑render() {const { forwardRef, ...rest } = this.props;return <Component {...rest} ref={forwardRef} />;}}// 比起第一种情况,这里的处理要稍微麻烦一些return forwardRef((props, ref) => <Wrapped {...props} forwardRef={ref} />);};// 下面这三种方式导出的页面都是可以按照预期调用 `onReady`export default ClazzHOC(IndexPage);// export default HOC(IndexPage);// export default IndexPage;
Remax 默认为微信的每个 host 组件定义了嵌套层数。其中 View
20 层,其他组件都在 1 ~ 5 层。如果出现形如下图的情况,可以通过配置修改嵌套层数。
// remax.config.js{UNSAFE_wechatTemplateDepth: {button: 2, // 把 button 的嵌套层数修改为 2 层}}
remax build --watch
无法真机预览?开发模式下默认不压缩文件以保证快速的响应文件变更,如需在开发模式进行真机调试(压缩文件),可以使用 --minimize
或 -m
参数开启,会增加整体构建时间,请酌情使用。
注意
minimize 压缩不等同于生产模式! 在 wechat 平台上使用
--minimize
参数预览时,需要在开发工具 IDE 本地设置中关闭"上传代码压缩混淆(如下图)"选项,否则 Webpack 和 IDE 的双重压缩会导致编译器无法解析语法而报错。
Taro 3.0 版本的实现原理与 Remax 大同小异,没有太大的区别。主要区别在于以下两个方面: