• 注意事项

    Remax 允许你在 React 组件中引用小程序的自定义组件。

    以支付宝小程序的 Badge 组件为例:

    1. import React from 'react';
    2. import { View } from 'remax/alipay';
    3. import Badge from 'mini-antui/es/badge'; // 直接当成 React 组件引用,无需申明 useComponents
    4. export default () => (
    5. <View>
    6. <Badge>
    7. <View slot="inner">Remax</View>
    8. </Badge>
    9. </View>
    10. );

    注意事项

    请按照自定义组件的定义方式声明属性(并非所有组件都采用驼峰的方式命名属性)。

    错误:

    1. import React from 'react';
    2. import { View } from 'remax/alipay';
    3. import VantIcon from 'vant-weapp/dist/icon';
    4. export default () => {
    5. const handleClick = () => {};
    6. return (
    7. <View>
    8. {/** vant-weapp 中 icon 的属性定义为 class-prefix, bindclick,所以应遵循其命名规则 */}
    9. <VantIcon
    10. name="close"
    11. classPrefix="custom-class-prefix"
    12. onClick={handleClick}
    13. />
    14. </View>
    15. );
    16. };

    正确:

    1. import React from 'react';
    2. import { View } from 'remax/alipay';
    3. import VantIcon from 'vant-weapp/dist/icon';
    4. export default () => {
    5. const handleClick = () => {};
    6. return (
    7. <View>
    8. <VantIcon
    9. name="close"
    10. class-prefix="custom-class-prefix"
    11. bindclick={handleClick}
    12. />
    13. </View>
    14. );
    15. };

    对于带有具名 slot 的组件,具名 slot 部分的最外层只能用 View 组件。

    错误:

    1. import React from 'react';
    2. import { View } from 'remax/alipay';
    3. import Badge from 'mini-antui/es/badge';
    4. export default () => (
    5. <View>
    6. <Badge>
    7. <Text slot="inner">Remax</Text>
    8. </Badge>
    9. </View>
    10. );

    正确:

    1. import React from 'react';
    2. import { View } from 'remax/alipay';
    3. import Badge from 'mini-antui/es/badge';
    4. export default () => (
    5. <View>
    6. <Badge>
    7. <View slot="inner">Remax</View>
    8. </Badge>
    9. </View>
    10. );

    不能在小程序自定义组件上使用 “Spread Attributes”。

    错误:

    1. import React from 'react';
    2. import { View } from 'remax/alipay';
    3. import Badge from 'mini-antui/es/badge';
    4. export default () => {
    5. const badgeProps = {
    6. text: 1,
    7. };
    8. return (
    9. <View>
    10. <Badge {...badgeProps}>
    11. <View slot="inner">Remax</View>
    12. </Badge>
    13. </View>
    14. );
    15. };

    正确:

    1. import React from 'react';
    2. import { View } from 'remax/alipay';
    3. import Badge from 'mini-antui/es/badge';
    4. export default () => {
    5. return (
    6. <View>
    7. <Badge text={1}>
    8. <View slot="inner">Remax</View>
    9. </Badge>
    10. </View>
    11. );
    12. };