首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BrowserRouter的问题,使用map不正确地迭代数组

BrowserRouter的问题,使用map不正确地迭代数组
EN

Stack Overflow用户
提问于 2019-09-11 17:49:13
回答 2查看 39关注 0票数 0

这是我的第一个React应用程序项目,我在使用<BrowserRouter>导入页面内容时遇到问题。

我有3个材料-UI选项卡/lights/animations/settings

代码语言:javascript
复制
<Switch>
        <Route path="/lights" component={LightsMenu} />
        <Route path="/animations" component={AnimationsMenu} /> 
        <Route path="/settings" component={SettingsMenu} />
</Switch>

选项卡nr.1与其他选项卡不同,因为我使用的是名为store.js的文件,其中

代码语言:javascript
复制
export const devices = [
{
    id: "philips-hue",
    name: "Philips",
    description: "Magic RGB",
    voltage: "210",
    lights: "Philips HUE"
  }, (...)

这是不起作用的LightsMenu (来自store.js的{devices})的样子:

代码语言:javascript
复制
export default function LightsMenu ({ devices }){
  return (
  <Grid container spacing={1}>
    <Grid item xs>
      <Paper style={styles.Paper} >
       {devices.map(([group, devices]) => (
          <Fragment>
            <List component="ul">
              {devices.map(({ lights }) => (

这是SettingsMenu的外观:

代码语言:javascript
复制
export default function SettingsMenu() {
  const classes = useStyles();

  return (
    <Grid>
      <Grid item xs={12}>
        <Paper style={styles.Paper}>
          <Typography variant="h6" color="primary">

我尝试过:

代码语言:javascript
复制
import LightsMenu from "./LightsMenu.js";

代码语言:javascript
复制
<Route path="/lights" component={LightsMenu} />

但是我有这个错误:

代码语言:javascript
复制
TypeError
devices is undefined
LightsMenu
/src/Components/Layouts/LightsMenu.js:32:6

  29 | return (
  30 | <Grid container spacing={1}>
  31 |   <Grid item xs>
> 32 |     <Paper style={styles.Paper} >
     |    ^
  33 |      {devices.map(([group, devices]) => (
  34 |         <Fragment>
  35 |           <List component="ul">

我如何解决这个问题?CODESANDBOX

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-11 18:04:00

你可以使用

代码语言:javascript
复制
import { devices } from './store.js'

<Route
  path='/lights'
  component={() => <LightsMenu devices={devices} />}
/>

而且,您没有使用map正确地迭代devices数组。

以下是工作代码:

代码语言:javascript
复制
  <Paper style={styles.Paper} >
   {devices.map(({lights}) => (
      <Fragment>
        <List component="ul">
            <ListItem>
              <ListItemText id="switch" primary={lights} />
              <ListItemSecondaryAction>
                <Switch
                  edge="end"
                  inputProps={{ "aria-labelledby": "switch" }}
                />
              </ListItemSecondaryAction>
            </ListItem>
        </List>
      </Fragment>
    ))}
  </Paper>

希望这能有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2019-09-11 18:03:50

您没有从store.js导入设备

在lightsMenu组件中添加import {devices} from "./store";

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57886471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档