React实现抽屉组件

简介

本文将会基于react实现简单的抽屉组件功能。抽屉会在以下几个方面改进。

1、抽屉显示状态由父组件state控制。

2、如果抽屉不需要显示时候,返回null。

Drawer.js

抽屉组件,通过父组件传递isOpen状态来开启或关闭抽屉。

javascript 复制代码
export const Drawer = ({isOpen, children}) => {
    const [visible, setVisible] = useState(false);

    useEffect(() => {
        setVisible(isOpen)
    }, [isOpen]);

    return visible ? (
        <div>
            {children}
        </div>
    ) : null
}

App.js

javascript 复制代码
function App() {
    const users = [{
        id: '123',
        name: 'vicyor'
    },
        {
            id: '456',
            name: 'john'
        }]
    return (
        <div className="App">
            {
                users.map(user => {

                     function UserListItem({user}){
                        const [open, setOpen ] = useState(false);
                        return (
                            <div>
                                <span>id:{user.id}</span>
                                <Drawer isOpen={open}><span>username: {user.name}</span></Drawer>
                                <input type='button' onClick={event => {setOpen(!open)}} value={open?'关闭详情':'打开详情'}/>
                            </div>
                        );
                    }
                    return <UserListItem user = {user} key = {user.id}/>
                })
            }
        </div>
    );
}
相关推荐
weixin79893765432...4 小时前
React + Fastify + DeepSeek 实现一个简单的对话式 AI 应用
人工智能·react.js·fastify
用户600071819105 小时前
【翻译】使用 React 19 操作构建可复用组件
react.js
禁止摆烂_才浅6 小时前
Taro 小程序页面返回传参完整示例
react.js·微信小程序·taro
还是大剑师兰特9 小时前
React面试题及详细答案150道(51-60)
react.js·react面试题·大剑师
10share10 小时前
React组件间通信
react.js
是一碗螺丝粉11 小时前
React Native 运行时深度解析
前端·react native·react.js
骑自行车的码农11 小时前
🍂 React DOM树的构建原理和算法
javascript·算法·react.js
前端老宋Running1 天前
一次从“卡顿地狱”到“丝般顺滑”的 React 搜索优化实战
前端·react.js·掘金日报
4***14901 天前
TypeScript在React中的前端框架
react.js·typescript·前端框架
y***54882 天前
TypeScript在React项目中的状态管理
javascript·react.js·typescript