react-dom.production.min.js:216 "TypeError: s.map is not a function"
react-dom.production.min.js:216 "TypeError: s.map is not a function"
由于此代码,我有以下错误 react-dom.production.min.js:216 "TypeError: s.map is not a function
:
sidebar.jsx
const [cats, setCats] = useState([]);
useEffect(() => {
const getCats = async () => {
const res = await axios.get("/categories");
setCats(res.data);
};
getCats();
}, []);
...
<span className="sidebarTitle">CATEGORIES</span>
<ul className="sidebarList">
{cats.map((c) => (
<Link to={`/?cat=${c.name}`} className="link">
<li className="sidebarListItem">{c.name}</li>
</Link>
))}
</ul>
我想在使用 MERN 制作的网站的边栏中显示这些类别。
重现它的代码:
index.js(在服务器部分)
const mongoose = require("mongoose");
const authRoute = require("./routes/auth");
const userRoute = require("./routes/users");
const postRoute = require("./routes/posts");
const categoryRoute = require("./routes/categories");
const multer = require("multer");
const path = require("path");
dotenv.config();
app.use(express.json());
app.use("/images", express.static(path.join(__dirname, "/images")));
mongoose
.connect(process.env.MONGO_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: true
})
.then(console.log("Connected to MongoDB"))
.catch((err) => console.log(err));
app.use("/api/categories", categoryRoute);
app.listen("3000", () => {
console.log("Backend is running.");
});
routes/categories.js
const router = require("express").Router();
const Category = require("../models/Category");
router.post("/", async (req, res) => {
const newCat = new Category(req.body);
try {
const savedCat = await newCat.save();
res.status(200).json(savedCat);
} catch (err) {
res.status(500).json(err);
}
});
router.get("/", async (req, res) => {
try {
const cats = await Category.find();
res.status(200).json(cats);
} catch (err) {
res.status(500).json(err);
}
});
module.exports = router;
models/Category.js
const mongoose = require("mongoose");
const CategorySchema = new mongoose.Schema(
{
name: {
type: String,
required: true,
},
},
{ timestamps: true }
);
module.exports = mongoose.model("Category", CategorySchema);
我现在想把所有东西都传给前端(REACT)显示在屏幕上。前端对应的代码命名为sidebar.jsx(我把代码放在上面一点)
你有什么办法让它正确吗?
从 api 你没有得到数组格式的数据。请检查您的 api 是否返回数组。
由于此代码,我有以下错误 react-dom.production.min.js:216 "TypeError: s.map is not a function
:
sidebar.jsx
const [cats, setCats] = useState([]);
useEffect(() => {
const getCats = async () => {
const res = await axios.get("/categories");
setCats(res.data);
};
getCats();
}, []);
...
<span className="sidebarTitle">CATEGORIES</span>
<ul className="sidebarList">
{cats.map((c) => (
<Link to={`/?cat=${c.name}`} className="link">
<li className="sidebarListItem">{c.name}</li>
</Link>
))}
</ul>
我想在使用 MERN 制作的网站的边栏中显示这些类别。
重现它的代码:
index.js(在服务器部分)
const mongoose = require("mongoose");
const authRoute = require("./routes/auth");
const userRoute = require("./routes/users");
const postRoute = require("./routes/posts");
const categoryRoute = require("./routes/categories");
const multer = require("multer");
const path = require("path");
dotenv.config();
app.use(express.json());
app.use("/images", express.static(path.join(__dirname, "/images")));
mongoose
.connect(process.env.MONGO_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: true
})
.then(console.log("Connected to MongoDB"))
.catch((err) => console.log(err));
app.use("/api/categories", categoryRoute);
app.listen("3000", () => {
console.log("Backend is running.");
});
routes/categories.js
const router = require("express").Router();
const Category = require("../models/Category");
router.post("/", async (req, res) => {
const newCat = new Category(req.body);
try {
const savedCat = await newCat.save();
res.status(200).json(savedCat);
} catch (err) {
res.status(500).json(err);
}
});
router.get("/", async (req, res) => {
try {
const cats = await Category.find();
res.status(200).json(cats);
} catch (err) {
res.status(500).json(err);
}
});
module.exports = router;
models/Category.js
const mongoose = require("mongoose");
const CategorySchema = new mongoose.Schema(
{
name: {
type: String,
required: true,
},
},
{ timestamps: true }
);
module.exports = mongoose.model("Category", CategorySchema);
我现在想把所有东西都传给前端(REACT)显示在屏幕上。前端对应的代码命名为sidebar.jsx(我把代码放在上面一点)
你有什么办法让它正确吗?
从 api 你没有得到数组格式的数据。请检查您的 api 是否返回数组。