Mirage JS json 数据是控制台日志记录但不在 React 页面上呈现
Mirage JS json data is console logging but not rendering on the page in React
我正在进行编码评估,运行 在我的页面上呈现来自 Mirage JS 的虚拟数据时遇到了问题。当我在控制台记录我正在寻找的数据时,它在控制台中显示正常,但我无法弄清楚为什么它没有在页面上呈现。
这是server.js
import { createServer, Model } from "miragejs";
import faker from "faker";
import avatar from "./avatar.png";
export function makeServer({ environment = "test" } = {}) {
let server = createServer({
environment,
models: {
employee: Model,
},
seeds(server) {
for (let i = 0; i < 10; i++) {
server.create("employee", {
id: faker.datatype.uuid(),
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
email: faker.internet.email(),
phone: faker.phone.phoneNumber(),
bio: faker.lorem.paragraph(),
avatar: avatar,
address: {
streetAddress: `${faker.address.streetAddress()} ${faker.address.streetName()}`,
city: faker.address.city(),
state: faker.address.stateAbbr(),
zipCode: faker.address.zipCode(),
},
});
}
},
routes() {
this.namespace = "api";
this.get(
"/employees",
(schema) => {
return schema.employees.all();
},
{ timing: 1000 }
);
this.patch(
"/employees/:id",
(schema, request) => {
const attrs = JSON.parse(request.requestBody);
const employee = schema.employees.find(request.params.id);
employee.update(attrs);
},
{ timing: 300 }
);
this.delete(
"/employees/:id",
(schema, request) => {
const employee = schema.employees.find(request.params.id);
employee.destroy();
return new Response();
},
{ timing: 300 }
);
},
});
return server;
}
这是 app.js
import { makeServer } from "./server";
import { useEffect, useState } from "react";
if (process.env.NODE_ENV === "development") {
makeServer({ environment: "development" });
}
function App() {
const [employees, setEmployees] = useState([])
useEffect(() => {
fetch('/api/employees')
.then(res => res.json())
.then(json => setEmployees(json.employees)
)
}, [])
return (
<div>
<header>
<h1>Employees</h1>
</header>
{employees.length > 0 ? (
<table>
<thead>
<tr>
<th>id</th>
<th>first name</th>
<th>last name</th>
</tr>
</thead>
<tbody>
{employees.map(({id, firstName, lastName}) => {
<tr key={id}>
<td>{id}</td>
<td>{firstName}</td>
<td>{lastName}</td>
</tr>
console.log(firstName)
})}
</tbody>
</table>
) : (
<p>No employees</p>
)}
</div>
);
}
export default App;
你的代码的问题在这里:
{employees.map(({id, firstName, lastName}) => {
<tr key={id}>
您没有return 映射函数中的任何内容,因此不会向页面呈现任何内容。尝试像这样添加 return
语句:
{employees.map(({id, firstName, lastName}) => {
console.log(firstName);
return (
<tr key={id}>
<td>{id}</td>
<td>{firstName}</td>
<td>{lastName}</td>
</tr>
);
})}
这个错误我已经犯过一百万次了。您在 employees.map
回调中缺少 return
语句。
我正在进行编码评估,运行 在我的页面上呈现来自 Mirage JS 的虚拟数据时遇到了问题。当我在控制台记录我正在寻找的数据时,它在控制台中显示正常,但我无法弄清楚为什么它没有在页面上呈现。
这是server.js
import { createServer, Model } from "miragejs";
import faker from "faker";
import avatar from "./avatar.png";
export function makeServer({ environment = "test" } = {}) {
let server = createServer({
environment,
models: {
employee: Model,
},
seeds(server) {
for (let i = 0; i < 10; i++) {
server.create("employee", {
id: faker.datatype.uuid(),
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
email: faker.internet.email(),
phone: faker.phone.phoneNumber(),
bio: faker.lorem.paragraph(),
avatar: avatar,
address: {
streetAddress: `${faker.address.streetAddress()} ${faker.address.streetName()}`,
city: faker.address.city(),
state: faker.address.stateAbbr(),
zipCode: faker.address.zipCode(),
},
});
}
},
routes() {
this.namespace = "api";
this.get(
"/employees",
(schema) => {
return schema.employees.all();
},
{ timing: 1000 }
);
this.patch(
"/employees/:id",
(schema, request) => {
const attrs = JSON.parse(request.requestBody);
const employee = schema.employees.find(request.params.id);
employee.update(attrs);
},
{ timing: 300 }
);
this.delete(
"/employees/:id",
(schema, request) => {
const employee = schema.employees.find(request.params.id);
employee.destroy();
return new Response();
},
{ timing: 300 }
);
},
});
return server;
}
这是 app.js
import { makeServer } from "./server";
import { useEffect, useState } from "react";
if (process.env.NODE_ENV === "development") {
makeServer({ environment: "development" });
}
function App() {
const [employees, setEmployees] = useState([])
useEffect(() => {
fetch('/api/employees')
.then(res => res.json())
.then(json => setEmployees(json.employees)
)
}, [])
return (
<div>
<header>
<h1>Employees</h1>
</header>
{employees.length > 0 ? (
<table>
<thead>
<tr>
<th>id</th>
<th>first name</th>
<th>last name</th>
</tr>
</thead>
<tbody>
{employees.map(({id, firstName, lastName}) => {
<tr key={id}>
<td>{id}</td>
<td>{firstName}</td>
<td>{lastName}</td>
</tr>
console.log(firstName)
})}
</tbody>
</table>
) : (
<p>No employees</p>
)}
</div>
);
}
export default App;
你的代码的问题在这里:
{employees.map(({id, firstName, lastName}) => {
<tr key={id}>
您没有return 映射函数中的任何内容,因此不会向页面呈现任何内容。尝试像这样添加 return
语句:
{employees.map(({id, firstName, lastName}) => {
console.log(firstName);
return (
<tr key={id}>
<td>{id}</td>
<td>{firstName}</td>
<td>{lastName}</td>
</tr>
);
})}
这个错误我已经犯过一百万次了。您在 employees.map
回调中缺少 return
语句。