Taro小程序 React 写一个获取短信验证码倒计时60秒然后可以重新获取

本文介绍如何在Taro框架中手动实现倒计时验证码功能,包括状态管理、按钮控制及倒计时逻辑,适合Taro开发者参考。

最近做的东西需要倒计时验证码,但是taro-UI里面没有,然后就只能手写。可能用taro的人还不多,很多组件还不是很完善,但是总体说来taro还是很不错的。那么下面我们来看倒计时怎么写,先贴效果图:
点击获取前
点击获取后
现在看到了样式的效果,那么代码是怎么样的呢?
1、先看数据,也就是state中的内容 phone_no是号码,icode是验证码,code_ts是按钮中是提示内容,show_btn是否展示获取验证码按钮,
toast一个提示框控制,count倒计时秒数

this.state = {
   
   
        phone_no: '',
        icode: '',
        code_ts: '获取验证码',
        show_btn: true,
        toast: false,
        count: 60
    }

2、然后是结构中的内容,样式应该不用了吧

<View className='phone_box_mid'
Taro + React开发的微信小程序中,实时监听一个值可以借助React的特性来实现。下面提供几种常见的方法: ### 使用 `useState` 和 `useEffect` 钩子 `useState` 用于定义状态,`useEffect` 用于在状态变化时执行副作用操作。以下是示例代码: ```javascript import React, { useState, useEffect } from &#39;react&#39;; import Taro from &#39;@tarojs/taro&#39;; const MyComponent = () => { const [value, setValue] = useState(0); useEffect(() => { // 当 value 变化时,这里的代码会执行 console.log(&#39;值已更新为:&#39;, value); }, [value]); const handleUpdateValue = () => { setValue(value + 1); }; return ( <Taro.View> <Taro.Text>当前值: {value}</Taro.Text> <Taro.Button onClick={handleUpdateValue}>更新值</Taro.Button> </Taro.View> ); }; export default MyComponent; ``` 在上述代码中,`useEffect` 依赖于 `value`,当 `value` 发生变化时,其回调函数会被触发,从而实现对 `value` 的监听。 ### 使用 `useReducer` 和 `useEffect` 钩子 `useReducer` 适合处理复杂的状态逻辑,同样可以结合 `useEffect` 来监听状态变化。示例如下: ```javascript import React, { useReducer, useEffect } from &#39;react&#39;; import Taro from &#39;@tarojs/taro&#39;; const reducer = (state, action) => { switch (action.type) { case &#39;INCREMENT&#39;: return state + 1; default: return state; } }; const MyComponent = () => { const [value, dispatch] = useReducer(reducer, 0); useEffect(() => { console.log(&#39;值已更新为:&#39;, value); }, [value]); const handleIncrement = () => { dispatch({ type: &#39;INCREMENT&#39; }); }; return ( <Taro.View> <Taro.Text>当前值: {value}</Taro.Text> <Taro.Button onClick={handleIncrement}>增加值</Taro.Button> </Taro.View> ); }; export default MyComponent; ``` 这里通过 `useReducer` 管理状态,`useEffect` 监听 `value` 的变化。 ### 使用 `Context` 和 `useContext` 结合 `useEffect` 如果需要在多个组件之间共享和监听状态,可以使用 `Context`。示例如下: ```javascript import React, { createContext, useContext, useState, useEffect } from &#39;react&#39;; import Taro from &#39;@tarojs/taro&#39;; const ValueContext = createContext(); const ValueProvider = ({ children }) => { const [value, setValue] = useState(0); return ( <ValueContext.Provider value={{ value, setValue }}> {children} </ValueContext.Provider> ); }; const MyComponent = () => { const { value, setValue } = useContext(ValueContext); useEffect(() => { console.log(&#39;值已更新为:&#39;, value); }, [value]); const handleUpdateValue = () => { setValue(value + 1); }; return ( <Taro.View> <Taro.Text>当前值: {value}</Taro.Text> <Taro.Button onClick={handleUpdateValue}>更新值</Taro.Button> </Taro.View> ); }; const App = () => { return ( <ValueProvider> <MyComponent /> </ValueProvider> ); }; export default App; ``` 通过 `Context` 可以在不同组件间共享状态,`useEffect` 依然用于监听状态变化。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值