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>
    );
}
相关推荐
web小白成长日记36 分钟前
前端让我明显感受到了信息闭塞的恐怖......
前端·javascript·css·react.js·前端框架·html
有意义4 小时前
从重复计算到无效渲染:用对 useMemo 和 useCallback 提升 React 性能
react.js·面试·前端框架
烟袅6 小时前
一文搞懂 useRef:它到底在“存”什么?
前端·react.js
3秒一个大6 小时前
React 中的 useMemo 与 useCallback:性能优化的利器
前端·react.js
ohyeah6 小时前
React 缓存三剑客:useMemo、useCallback 与 memo 的正确打开方式
前端·react.js
黎明初时6 小时前
React基础框架搭建5-路由配置:react+router+redux+axios+Tailwind+webpack
前端·react.js·webpack
且菜且折腾9 小时前
react快捷键hook
javascript·react.js·ecmascript
晴栀ay11 小时前
React性能优化三剑客:useMemo、memo与useCallback
前端·javascript·react.js
Bigger12 小时前
Tauri (25)——消除搜索列表默认选中的 UI 闪动
前端·react.js·weui
hongkid12 小时前
React Native 如何打包正式apk
javascript·react native·react.js