Reactjs 将获取的数据传递给react组件
我正在使用getServerSideProps在服务器端获取数据。数据提取工作正常。我想将获取的数据传递给一个名为UserForm的组件。这是我的密码Reactjs 将获取的数据传递给react组件,reactjs,next.js,Reactjs,Next.js,我正在使用getServerSideProps在服务器端获取数据。数据提取工作正常。我想将获取的数据传递给一个名为UserForm的组件。这是我的密码 // This gets called on every request export async function getServerSideProps(context) { // Fetch data from external API const { id } = context.query; const res =
// This gets called on every request
export async function getServerSideProps(context) {
// Fetch data from external API
const { id } = context.query;
const res = await fetch(`http://localhost:3001/v1/firm/${id}`)
const data = await res.json()
// Pass data to the page via props
return { props: { data } }
}
function ComingSoon({ data }) {
const router = useRouter()
const { id } = router.query
return (
<div className="coming-soon-area">
<TopHeader />
<NavbarStyleFive />
<UserForm data = {data}/>
<Footer />
</div>
)
}
export default ComingSoon;
//每次请求都会调用它
导出异步函数getServerSideProps(上下文){
//从外部API获取数据
const{id}=context.query;
const res=等待取数(`http://localhost:3001/v1/firm/${id}`)
const data=await res.json()
//通过道具将数据传递到页面
返回{props:{data}}
}
函数即将到来({data}){
const router=useRouter()
const{id}=router.query
返回(
)
}
出口违约即将来临;
这是UserForm的内容
import React from 'react';
const UserForm = (data) => {
return (
<div className="coming-soon-area">
<h2>{data[0].name} coming soon</h2>
</div>
)
}
export default UsernForm;
从“React”导入React;
const UserForm=(数据)=>{
返回(
{data[0].name}即将到来
)
}
导出默认UsernForm;
我在UserForm中得到一个错误,告诉我数据未定义。你知道这个问题吗
编辑:
数据不是未定义的,此代码工作正常。我认为问题在于访问UserForm中的数据道具
<div className="coming-soon-area">
<TopHeader />
<NavbarStyleFive />
<h2>{data[0].name} coming soon</h2>
<Footer />
</div>
{data[0].name}即将到来
考虑到来自api的数据
是异步的,React可以在数据
可用之前尝试呈现UserForm
。为了避免这种情况,您可以修改UserForm
如下:
import React from 'react';
const UserForm = ({ data }) => {
return (
<div className="coming-soon-area">
{data && data.length > 0 && <h2>{data[0].name} sofort kündigen</h2>}
</div>
)
}
export default UsernForm;
从“React”导入React;
const UserForm=({data})=>{
返回(
{data&&data.length>0&&{data[0].name}sofort kündigen}
)
}
导出默认UsernForm;
这样,只有<代码>数据< /代码>是有效的而不是空的,<代码>数据[0 ]。No.<代码>将显示。
在访问之前,总是考虑检查获取的数据。
数据
最初是未定义的
,即处于初始装载状态
。
而且,当未定义时,不需要空值或空值,您有很多方法可以防止这种情况。您可以使用条件语句,甚至应用程序不再崩溃,但不幸的是数据[0]。名称从未显示,因此组件上的数据值似乎始终为空。并且api调用在服务器端完成,因此向用户显示数据时不能为空;)不幸的是,我看不到数据
形状。但是试一下像data.data
(通常是这样的…)这样的东西。如果我从“const UserForm=(data)=>{”中删除数据,数据是未定义的。所以我认为我在UserForm中访问数据的方式是错误的。是的,我也这么认为。你能给我看data
console.log吗?