【发布时间】:2019-12-16 05:09:32
【问题描述】:
我有一个父组件 Listings,它有一个来自种子文件的对象数组。我只想在页面加载时加载 14 个对象中的前 9 个。
const Listings = () => {
const [ listingsData, setListings] = useState(listings);
const [ homesDisplayed , setDisplayNumber ] = useState(listingsData.slice(0, 9));
const homes = homesDisplayed.map((home, index) => (
<div className="col xl4" key={index}>
<HomeListingCard
name={home.homeName}
imageUrl={home.imageURL}
beds={home.beds}
baths={home.baths}
isMultiSection={home.isMultiSection}
sqft={home.sqft}
startingPrice={home.startingPrice}
/>
</div>
));
return (
<div>
<div className="row">
<div className="listings-subheader">
<h3 className="left available-homes">{`${listingsData.length} `}homes available</h3>
<div className="right">
<SortBy />
</div>
</div>
</div>
<div className="row">
{homes}
</div>
<div className="row">
<LoadListings listings={listingsData} homesDisplayed={homes} setDisplayNumber={setDisplayNumber} />
</div>
</div>
)
}
export default Listings;
我使用const [ homesDisplayed , setDisplayNumber ] = useState(listingsData.slice(0, 9)); 将一个包含 9 个对象的数组设置为状态。
这很好用。
然后我试图将我的状态作为道具传递给子组件,如下所示:
<LoadListings listings={listingsData} homesDisplayed={homes} setDisplayNumber={setDisplayNumber} />
当页面最初加载时,这些道具有数据。但是当我点击<LoadListings />子组件中的一个按钮到console.log(props)时,我的数据都是未定义的。
<LoadListings /> 看起来像:
const LoadListings = (props) => {
const updateListings = (props) => {
console.log(props.homes);
// props.setDisplayNumber(...props.homesDisplayed, props.listings.slice(9, 12));
}
return (
<button onClick={updateListings}>Load More</button>
)
}
我的目标是单击按钮,然后将 updateLIstings 从原来的 14 数组中再拼接 3 个,然后像这样将它们添加到 homeDisplayed 数组中
const updateListings = (props) => {
props.setDisplayNumber(...props.homesDisplayed, props.listings.slice(9, 12));
}
但是 props.homesDisplayed - 以及所有的 props - 都是未定义的。
谢谢。
【问题讨论】:
-
从哪里传递 useState(listings) 中的列表?
-
在
我正在从种子文件中导入一个数组。 '从'./seed.js'导入列表;' -
当我在加载页面后查看反应开发人员工具时,道具存在于我的子组件中。但是然后我单击带有附加功能的按钮,那里什么都没有。
-
您正在发送从
onClick回调调用它的事件props。此事件没有homes属性,因此它返回未定义。我认为您不想传递任何论点:const updateListings = () => {
标签: reactjs react-hooks react-state-management react-state