【发布时间】:2021-03-16 14:31:21
【问题描述】:
我有一个NavBar 组件,它有一个动态生成的链接列表(这些链接是在我的后端查询一些categories 后生成的)。这些链接存储在 NavBar 的子组件中,称为 DrawerMenu。
NavBar 是主 App.js 组件的子组件。
在我的Category 组件中,我有一个删除类别的“删除”功能。一旦我删除了一个类别,我想在NavBar 中删除指向它的链接。我该怎么做呢?
为了进一步了解,我的组件如下所示:
抽屉菜单组件
class DrawerMenu extends Component {
state = {
menuItems: [] // Takes a series of objects of the shape { name: "", link: "" }
}
getData = (query) => {
// Query backend for category data and set it to this.state.menuItems
}
componentDidMount() {
this.getData(menuItemsQuery)
}
render() {
const { classes, handleDrawerClose, open } = this.props
const { menuItems } = this.state
const drawer = (classes, handleDrawerClose) => (
<div>
...
{
menuItems.map((menuItem, index) => (
<Link color="inherit" key={index} to={menuItem.link} className={classes.drawerLink} component={RouterLink}>
<ListItem button className={classes.drawerListItem} onClick={handleDrawerClose}>
<ListItemText primary={menuItem.name} />
</ListItem>
</Link>
))
}
...
</div>
)
...
return (
<div>
<Drawer
variant="temporary"
anchor='left'
open={open}
onClose={handleDrawerClose}
classes={{
paper: `${open ? classes.drawerOpen : null} ${!open ? classes.drawerClose : null}`,
}}
ModalProps={{
keepMounted: true, // Better open performance on mobile.
}}
>
{drawer(classes, handleDrawerClose)}
</Drawer>
</div>
)
}
}
导航栏组件
function PrimarySearchAppBar(props) {
return (
<div className={classes.grow}>
...
<DrawerMenu
classes={classes}
handleDrawerClose={handleDrawerClose}
open={open}
/>
...
</div>
)
}
类别组件
class Category extends Component {
...
deleteCategory = async () => {
// Code to request backend to delete category
this.props.history.push(`/`)
}
...
}
【问题讨论】:
-
您可以使用 Content API reactjs.org/docs/context.html
-
您可以添加另一个状态来标记服务器请求已发出,您可以在删除后拉取新数据
标签: javascript reactjs material-ui frontend