0
從ResultsTable按鈕單擊我收到處理ClickClick函數所需的值,但setState未設置gameId並保持「」,我錯在哪裏?如果我控制檯登錄gameId,這是我想要的。感謝您的任何幫助。React setState函數不會更改值
class ResultsTableContainer extends Component {
constructor(props) {
super(props);
this.state = {
tableConfig,
games: [],
gameId: ""
};
}
handleClick = event => {
event.preventDefault();
const gameId = event.target.id;
this.setState({ gameId });
console.log(this.state);
};
currentContent =() => {
if (this.state.gameId !== "") {
return <GameDetailsContainer gameId={this.state.gameId} />;
}
return (
<ResultsTable
tableConfig={this.state.tableConfig}
games={this.state.games}
onButtonClick={this.handleClick}
/>
);
};
render() {
return <div>{this.currentContent()}</div>;
}
}
export default ResultsTableContainer;
ResultsTable.jsx
const ResultsTable = ({ games, tableConfig, onButtonClick }) => (
<Table>
...
<TableBody>
{games.map((game, index) => (
...
<button>
<Link
to={`/games/${game.id}`}
onClick={onButtonClick}
id={game.id}
>
Results
</Link>
</button>
</TableBody>
</Table>
);
export default ResultsTable;
你需要綁定你的'handleClick'功能之後不要叫控制檯。這是最常見的反應錯誤。 – jmargolisvt
@jmargolisvt:OP似乎在做這件事。他們正在使用帶有箭頭功能的* class字段*提案。 –
狀態沒有立即更新,所以'this.setState({gameId}); console.log(this.state);'會記錄舊的狀態。做'this.setState({gameId},()=> console.log(this.state));'而是。 –