time travel
This commit is contained in:
		
							parent
							
								
									e6a8ba41fd
								
							
						
					
					
						commit
						cba59847bf
					
				
							
								
								
									
										13
									
								
								src/App.js
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								src/App.js
									
									
									
									
									
								
							@ -60,15 +60,20 @@ function Board({ xIsNext, squares, onPlay }) {
 | 
			
		||||
function App() {
 | 
			
		||||
  const [xIsNext, setXIsNext] = useState(true);
 | 
			
		||||
  const [history, setHistory] = useState([Array(9).fill(null)]);
 | 
			
		||||
  const currentSquares = history[history.length - 1];
 | 
			
		||||
  const [currentMove, setCurrentMove] = useState(0);
 | 
			
		||||
  const currentSquares = history[currentMove];
 | 
			
		||||
 | 
			
		||||
  function handlePlay(nextSquares) {
 | 
			
		||||
    setHistory([...history, nextSquares]);
 | 
			
		||||
    const nextHistory = [...history.slice(0, currentMove + 1), nextSquares];
 | 
			
		||||
    setHistory(nextHistory);
 | 
			
		||||
    setCurrentMove(nextHistory.length - 1);
 | 
			
		||||
    setXIsNext(!xIsNext);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function jumpTo(nextMove) {
 | 
			
		||||
    // TODO
 | 
			
		||||
    setCurrentMove(nextMove);
 | 
			
		||||
    setHistory(history.slice(0, nextMove+1));
 | 
			
		||||
    setXIsNext(nextMove % 2 === 0);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const moves = history.map((squares, move) => {
 | 
			
		||||
@ -79,7 +84,7 @@ function App() {
 | 
			
		||||
      description = 'Go to game start';
 | 
			
		||||
    }
 | 
			
		||||
    return (
 | 
			
		||||
      <li>
 | 
			
		||||
      <li key={move}>
 | 
			
		||||
        <button onClick={() => jumpTo(move)}>{description}</button>
 | 
			
		||||
      </li>
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user