javascript - 从 React 功能组件导出功能并在其他地方使用

标签 javascript reactjs redux react-redux

我想将功能从我的一个使用 Hook 的功能组件导出到另一个功能组件。我想防止冗余代码出现在我的组件中。

我试图创建单独的 function.js 文件,我想在其中放置我的一些函数,但是 useDispatch Hook 使它不可能,因为它会抛出很多错误尽一切努力使其发挥作用。 我正在寻找解决方案并尝试以不同的组合使用一些 export 语句。

我想做的是将我的 toggleDrawer 函数从 Layout 组件导出到其他组件,这是我的代码。我敢肯定这很容易,但我遗漏了一些东西。

import React from 'react'
import { useSelector, useDispatch } from 'react-redux'
import Header from '../Header/header'
import DrawerItems from '../DrawerItems/drawerItems'
import { REDUCERS } from '../../Config/config'

import Container from '@material-ui/core/Container'
import Drawer from '@material-ui/core/Drawer'
import { makeStyles } from '@material-ui/core/styles'

const useDrawerStyles = makeStyles({
    paper: {
        width: '175px',
        padding: '10px'
    }
})

const Layout = props => {
    const { isDrawerOpened } = useSelector(state => {
        return {
            ...state.interface_reducer
        }
    })
    const dispatch = useDispatch()
    const drawerClasses = useDrawerStyles()

    const toggleDrawer = (side, open) => event => {
        if (event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {
            return null
        }

        dispatch({
            type: REDUCERS.TOGGLE_DRAWER,
            payload: open
        })
    }

    return (
        <Container>
            <React.Fragment>
                <Header/>
                <Drawer classes={{paper: drawerClasses.paper}} open={isDrawerOpened} onClose={toggleDrawer('left', false)} >
                    <DrawerItems/>
                </Drawer>
                { props.children }
            </React.Fragment>
        </Container>
    )
}

export default Layout

最佳答案

在另一个文件中定义函数。或者在该文件中定义它并导出它。然后你可以将它导入到其他文件中用于其他组件。

关于javascript - 从 React 功能组件导出功能并在其他地方使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58009091/

相关文章:

javascript - jquery 中的文本框一个仅包含数字,另一个包含逗号

javascript - 这在函数内部不起作用

javascript - Firestore 更新集合中的所有文档

angular - 在路由解析器中调度 ngrx 存储操作

javascript - 显示弹出窗口的最佳方式

javascript - 带直播的VideoJs

wordpress - Wordpress API 的 React 前端 - 添加 content.rendered 只允许安全来源

javascript - 如何通过 refs 以编程方式在 React 中设置选定的值?

javascript - 使用nodejs,一个用户的更改可以同时反射(reflect)到其他用户

reactjs - 使用 shouldComponentUpdate 每秒重新渲染 block 组件