React setState函数不会更改值

时间:2017-09-26 15:29:06

标签: javascript reactjs

从ResultsTable按钮单击我收到handleClick函数所需的值,但是setState没有设置gameId并且仍然是"",我在哪里错了?如果我控制日志gameId它是我想要的。谢谢你的帮助。

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;

2 个答案:

答案 0 :(得分:0)

请不要在setState之后调用console.log(state)juste。 我认为一切正常。

答案 1 :(得分:0)

请勿在setState

之后立即呼叫控制台
handleClick = event => {
    event.preventDefault();
    const gameId = event.target.id;
    this.setState({ gameId });
}