[英]Can not set state with props in react
我正在嘗試通過從父組件獲得的數組對 map 進行處理,但問題是,即使我將數據分配給 state,在初始加載時 state 也是空的,結果我的數組為空。 我需要 state 中的這個數組,因為我將在我的項目中實現排序功能,並且我想在用戶單擊相應單元格時更改userData
。 這是我的代碼:
import React, { useState } from 'react';
import { Table } from 'semantic-ui-react';
import Moment from 'react-moment';
const UserTable = ({ repoData }) => {
const [userData, setUserData] = useState(repoData);
console.log(repoData)
const descending = [].concat(repoData)
.sort((a, b) => a.name < b.name ? 1 : -1);
const ascending = [].concat(repoData)
.sort((a, b) => a.name > b.name ? 1 : -1);
function clickHandler() {
setUserData(descending)
}
return (
<div>
<Table sortable celled fixed>
<Table.Header>
<Table.Row>
<Table.HeaderCell
onClick={clickHandler}
>
Repository Name
</Table.HeaderCell>
<Table.HeaderCell
>
Description
</Table.HeaderCell>
<Table.HeaderCell
>
Created At
</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
{userData.map(repos => {
return <Table.Row>
<Table.Cell>{repos.name}</Table.Cell>
<Table.Cell>{repos.description}</Table.Cell>
<Table.Cell> <Moment format="DD-MM-YYYY">{repos.created_at}</Moment></Table.Cell>
</Table.Row>
})}
</Table.Body>
</Table>
</div>
);
}
export default UserTable;
由於第一個日志是空的,這意味着父組件將一個空數組傳遞給UserTable
。
如果您不希望UserTable
在repoData
仍然為空時顯示,您可以在父級別通過檢查repoData
是否已定義並且長度 > 0 來執行此操作。
const App = () => {
...
return (
<>
...
{repoData && repoData.length ? <UserTable repoData={repoData} /> : null (or something else)}
...
</>
)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.