Files
TestRestructureWechatLymark…/src/pages/userEdit/components/ModifyModal.tsx
T
2022-06-23 16:56:25 +08:00

49 lines
1.9 KiB
TypeScript

import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useState } from "react"
import Popup from "@/components/popup";
import { Button, Image, Text, Textarea, View } from "@tarojs/components"
import "./ModifyModal.scss"
interface Params{
title?: string,
save: (value: any)=>void, // 确定保存
}
export default memo(forwardRef((props:any,ref)=>{
const {title="修改昵称"} = props;
const [value, setValue] = useState("");
useEffect(()=>{
setValue(props.value);
},[props.value])
// popup输入长度
const handleTextareaInput = (ev:any)=>{
setValue(ev.detail.value.slice(0,20));
}
// 重置
const handleTextareaReset = ()=>{
setValue("");
}
const [textareaBottom, setTextareaBottom] = useState(0);
const handleBlur = ()=>{
setTextareaBottom(0);
}
const handleFocus = (ev)=>{
setTextareaBottom(ev.detail.height);
}
const [modalShow,setModalShow] = useState(false);
useImperativeHandle(ref, ()=>({setModalShow}))
return (
<Popup onClose={()=>setModalShow(false)} title={title} show={modalShow}>
<View style={{marginBottom: `${textareaBottom}px`}} className="modify-ickname-content">
<View className="modify-ickname-input">
<Textarea showConfirmBar={false} auto-focus adjustPosition={false} value={value} onBlur={handleBlur} onFocus={handleFocus} onInput={handleTextareaInput} maxlength={20}/>
<Text>{value?.length}/20</Text>
</View>
<Text className="modify-ickname-tips">请设置2-20个字符,可由中文、英文、数字组成</Text>
<View className="modify-ickname-operation">
<Button onClick={handleTextareaReset} hoverClass="none" className="modify-ickname-operation-reset">重置</Button>
<Button onClick={()=>props.save(value)} hoverClass="none" className="modify-ickname-operation-save">保存</Button>
</View>
</View>
</Popup>
)
}))