1.0.5 • Published 3 years ago

@cloudbase/ui-react v1.0.5

Weekly downloads
-
License
BSD-3
Repository
github
Last release
3 years ago

云开发 UI 组件

云开发 UI 组件 是云开发官方维护的 UI 组件库,提供基于云开发封装的一系列能力,目前已支持统一登录能力。

安装

npm install --save @cloudbase/ui-react

目前仅支持了 React + WEUI 组件库。

⚠️ UI 组件需结合 @cloudbase/js-sdk@1.5.4-alpha.0 及以上版本使用。

使用

推荐用法

import React from 'react';

import {
  CloudbaseAuthenticator,
  onAuthUIStateChange,
  AUTHSTATE,
  LOGINTYPE,
  CloudbaseSignOut, // 登出组件
  CloudbaseSignIn, // 登录组件
  CloudbaseSetUsername, // 更新用户名组件
  CloudbaseForgotPassword, // 忘记密码组件
  CloudbaseResetPassword, // 重置密码组件
  CloudbaseSignUp // 注册组件
} from '@cloudbase/ui-react';
import cloudbase from '@cloudbase/js-sdk';

const app = cloudbase.init({
  env: 'your envId'
});

function App() {
  const [authState, setAuthState] = React.useState(AUTHSTATE.SIGNIN);
  const [user, setUser] = React.useState({});

  React.useEffect(() => {
    return onAuthUIStateChange(app, (nextAuthState, authData) => {
      setAuthState(nextAuthState);
      setUser(authData);
    });
  }, []);

  return authState === AUTHSTATE.SIGNEDIN && user ? (
    <div className='App'>
      <header className='App-header'>
        Hello, {user.uid}
        <CloudbaseSignOut app={app}></CloudbaseSignOut> {/* 注册按钮*/}
        <CloudbaseSetUsername
          app={app}
          handleSubmit={() => {
            console.log('更新完成用户名');
            // TODO: 自定义业务逻辑
          }}
        ></CloudbaseSetUsername> {/* 更新用户名组件框*/}
      </header>
    </div>
  ) : (
    <div className='App'>
      <header className='App-header'>
        <CloudbaseAuthenticator userLoginType={LOGINTYPE.PHONE} app={app} />
      </header>
    </div>
  );
}

export default App;

属性

字段类型必填说明
userLoginTypestring登录类型, 参考 LOGINTYPE,使用登录功能前,需前往腾讯云 CloudBase 控制台开启对应登录开关。
appCloudbasecloudbase 实例
initialLoginStatestring组件初始状态,AUTHSTATE.SIGNIN or AUTHSTATE.SIGNUP,默认为 AUTHSTATE.SIGNIN,参考AUTHSTATE
isUsePasswordboolean仅在短信登录生效,true 为 密码登录模式,false 为验证码登录模式
handleToastEventfunction错误处理函数,可由开发者自定义
signInCloudbaseSignIn登录子组件
signUpCloudbaseSignUp注册子组件
forgotPasswordCloudbaseForgotPassword忘记密码子组件
resetPasswordCloudbaseResetPassword重置密码子组件
登录类型 LOGINTYPE
字段值类型说明
WECHAT_PUBLICstring微信公众号授权登录
WECHAT_OPENstring微信开放平台登录
EMAILstring邮箱登录
USERNAMEstring用户名密码登录
PHONEstring手机号登录
登录界面态 AUTHSTATE
字段值类型说明
SIGNINstring登录
SIGNEDINstring已登录,基于此状态判断登录完成
SIGNUPstring注册
FORGOTPASSWORDstring重置密码
RESETPASSWORDstring重置密码
SIGNEDOUTstring已登出

自定义 CSS

暂不支持

子组件

CloudbaseSignIn

登录框组件

npm.io

用法

<CloudbaseAuthenticator
  userLoginType={LOGINTYPE.PHONE}
  app={app}
  signIn={
    <CloudbaseSignIn
      app={app}
      userLoginType={LOGINTYPE.PHONE}
      submitButtonText={'登录按钮文案'}
    />
  }
/>

属性

字段类型必填说明
userLoginTypestring登录类型, 参考 LOGINTYPE
appCloudbasecloudbase 实例
isUsePasswordboolean仅在短信登录生效,true 为 密码登录模式,false 为验证码登录模式
headerTextstring登录框头部文案
createAccountTextstring创建账号文案
resetPasswordTextstring重置密码文案
submitButtonTextstring登录按钮文案
hideSignUpboolean是否隐藏注册跳转按钮
oauthConfigOAuthConfig第三方登录配置,目前支持微信公众号授权登录,微信开放平台登录,相关文档参考
formFieldsArray<FormFieldType >自定义表单项输入框
OAuthConfig
字段类型必填说明
appidstring微信 appid
scopestring"snsapi_base" , "snsapi_userinfo" , "snsapi_login",参考微信授权登录
FormFieldType
字段类型必填说明
valuestring输入框值
inputPropsstring输入框自定义属性,参考
placeholderstring输入框 placeholder
disabledboolean是否禁用
requiredboolean是否必填
labelstring输入框左侧标签
typeInputType输入框类型,必填,参考InputType
InputType
字段值类型说明
emailstring邮箱
passwordstring密码
phone_numberstring手机号
oldPasswordstring旧密码,重置密码场景
newPasswordstring新密码,重置密码场景
codestring短信验证码
usernamestring用户名

自定义 formFields

<CloudbaseAuthenticator
  userLoginType={LOGINTYPE.PHONE}
  app={app}
  signIn={
    <CloudbaseSignIn
      app={app}
      userLoginType={LOGINTYPE.PHONE}
      submitButtonText={'登录按钮文案'}
      formFields={[
        {
          type: 'phone_number',
          required: true,
          placeholder: '请输入手机号',
          inputProps: {
            maxlength: 11
          }
        },
        {
          type: 'password',
          required: true,
          placeholder: '请输入密码',
          inputProps: {
            minlength: 8,
            maxlength: 15,
            autoComplete: 'current-password', // 自动填充设置(HTML 标准属性)
            pattern: '[a-zA-Z0-9]+' // 正则校验,支持大小写字母及数字
          }
        }
      ]}
    />
  }
/>

CloudbaseSignUp

注册框组件

npm.io

用法

<CloudbaseAuthenticator
  userLoginType={LOGINTYPE.PHONE}
  app={app}
  signUp={
    <CloudbaseSignUp
      app={app}
      submitButtonText={'注册按钮文案'}
      userLoginType={LOGINTYPE.PHONE}
    />
  }
/>

属性

字段类型必填说明
headerTextstring注册框头部文案
submitButtonTextstring注册按钮文案
signInTextstring返回登录文案
userLoginTypestring登录类型, 参考 LOGINTYPE
formFieldsArray<FormFieldType >自定义表单项输入框
appCloudbasecloudbase 实例

自定义 formFields

<CloudbaseAuthenticator
  userLoginType={LOGINTYPE.PHONE}
  app={app}
  signUp={
    <CloudbaseSignUp
      app={app}
      userLoginType={LOGINTYPE.PHONE}
      submitButtonText={'注册按钮文案'}
      formFields={[
        {
          type: 'phone_number',
          required: true,
          placeholder: '请输入手机号',
          inputProps: {
            maxlength: 11
          }
        },
        {
          type: 'code',
          required: 'true',
          placeholder: '请输入验证码'
        },
        {
          type: 'password',
          required: true,
          placeholder: '请输入密码',
          inputProps: {
            minlength: 8,
            maxlength: 15,
            autoComplete: 'current-password', // 自动填充设置(HTML 标准属性)
            pattern: '[a-zA-Z0-9]+' // 正则校验,支持大小写字母及数字
          }
        }
      ]}
    />
  }
/>

CloudbaseForgotPassword

忘记密码组件

npm.io

⚠️ CloudbaseForgotPassword 组件暂只支持邮箱登录场景。

用法

<CloudbaseAuthenticator
  userLoginType={LOGINTYPE.EMAIL}
  app={app}
  forgotPassword={
    <CloudbaseForgotPassword
      app={app}
      userLoginType={LOGINTYPE.EMAIL}
      submitButtonText={'忘记密码按钮文案'}
    />
  }
/>

属性

字段类型必填说明
headerTextstring忘记密码框头部文案
submitButtonTextstring按钮文案
userLoginTypestring登录类型, 参考 LOGINTYPE,暂只支持邮箱
formFieldsArray<FormFieldType >自定义表单项输入框
appCloudbasecloudbase 实例

自定义 formFields

<CloudbaseAuthenticator
  userLoginType={LOGINTYPE.EMAIL}
  app={app}
  forgotPassword={
    <CloudbaseForgotPassword
      app={app}
      userLoginType={LOGINTYPE.EMAIL}
      submitButtonText={'忘记密码按钮文案'}
      formFields={[
        {
          type: 'email',
          required: true,
          placeholder: '请输入邮箱',
          inputProps: {
            maxlength: 11
          }
        }
      ]}
    />
  }
/>

CloudbaseResetPassword

重置密码组件

npm.io

用法

<CloudbaseAuthenticator
  userLoginType={LOGINTYPE.PHONE}
  app={app}
  resetPassword={
    <CloudbaseResetPassword
      app={app}
      userLoginType={LOGINTYPE.PHONE}
      submitButtonText={'重置密码按钮文案'}
    />
  }
/>

属性

字段类型必填说明
headerTextstring重置框头部文案
submitButtonTextstring重置按钮文案
sendButtonTextstring发送验证码按钮文案,仅支持手机号登录场景
userLoginTypestring登录类型, 参考 LOGINTYPE
formFieldsArray<FormFieldType >自定义表单项输入框
appCloudbasecloudbase 实例

自定义 formFields

<CloudbaseAuthenticator
  userLoginType={LOGINTYPE.PHONE}
  app={app}
  resetPassword={
    <CloudbaseResetPassword
      app={app}
      userLoginType={LOGINTYPE.PHONE}
      submitButtonText={'重置按钮文案'}
      formFields={[
        {
          type: 'phone_number',
          required: true,
          placeholder: '请输入手机号',
          inputProps: {
            maxlength: 11
          }
        },
        {
          type: 'code',
          required: 'true',
          placeholder: '请输入验证码'
        },
        {
          type: 'oldPassword',
          required: true,
          placeholder: '请输入旧密码',
          inputProps: {
            minlength: 8,
            maxlength: 15,
            autoComplete: 'current-password', // 自动填充设置(HTML 标准属性)
            pattern: '[a-zA-Z0-9]+' // 正则校验,支持大小写字母及数字
          }
        },
        {
          type: 'newPassword',
          required: true,
          placeholder: '请输入新密码',
          inputProps: {
            minlength: 8,
            maxlength: 15,
            autoComplete: 'new-password', // 自动填充设置(HTML 标准属性)
            pattern: '[a-zA-Z0-9]+' // 正则校验,支持大小写字母及数字
          }
        }
      ]}
    />
  }
/>

CloudbaseSignOut

登出组件

npm.io

用法

参考推荐用法,需在状态判断为已登录后使用。

属性

字段类型必填说明
submitButtonTextstring登出按钮文案
userLoginTypestring登录类型, 参考 LOGINTYPE
appCloudbasecloudbase 实例

CloudbaseSetUsername

更新用户名组件

npm.io

用法

参考推荐用法,需在状态判断为已登录后使用。

属性

字段类型必填说明
submitButtonTextstring更新用户名按钮文案
userLoginTypestring登录类型, 参考 LOGINTYPE
appCloudbasecloudbase 实例
handleSubmitCloudbase自定义更新后业务逻辑
formFieldsArray<FormFieldType >自定义表单项输入框

自定义 formFields

<CloudbaseSetUsername
  app={app}
  userLoginType={LOGINTYPE.PHONE}
  submitButtonText={'更新用户名文案'}
  formFields={[
    {
      type: 'username',
      required: true,
      placeholder: '请输入用户名',
      inputProps: {
        maxlength: 11
      }
    }
  ]}
/>

工具方法

onAuthUIStateChange(app, handleStateChange)

状态监听器

输入参数

字段类型必填说明
appCloudbase完成 init 的 Cloudbase 实例
handleStateChangeFunction自定义状态处理回调函数,接收 2 个参数,参数 1 authState 表示监听到的 UI 状态,参数 2 authData 表示推送的 数据,若完成登录,则推送当前 user 信息
1.0.5

3 years ago

1.0.5-beta

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.3-beta

3 years ago

1.0.2-beta

3 years ago

1.0.1

3 years ago

0.0.8-beta

3 years ago

1.0.0

3 years ago

0.0.4-beta

3 years ago

0.0.7-beta

3 years ago

0.0.6-beta

3 years ago

0.0.5-beta

3 years ago

0.0.3-beta

3 years ago

0.0.2-beta

3 years ago

0.0.1-beta

3 years ago