Skip to content

Conversation

@Blaine206
Copy link

React Tic Tac Toe

Congratulations! You're submitting your assignment. Please reflect on the assignment with these questions.

Reflection

Prompt Response
How are events / event handlers and useState connected? useState is the tool that allows for an Event to change state in functional components.
What are two ways to do "dynamic styling" with React? When should they be used? Inline styles or external stylesheets using className in the component
Much like Rails works with the HTTP request->response cycle, React works with the browser's input->output cycle. Describe React's cycle from receiving user input to outputting different page content. 1. Click button (or user does something). 2. Update state with the setState function. 3. Re-render page.

CS Fundamentals Questions

Question Answer
What do you think is the BigO complexity of the method you use to compute a winner? 0(1)
Consider what happens when React processes a state change from setState -- it must re-render all of the components that now have different content because of that change.
What kind of data structure are the components in, and what sort of algorithms would be appropriate for React's code to "traverse" those components?
Speculate wildly about what the Big-O time complexity of that code might be.
VDOM reps a series of components, so that when state changes the components that are effected by it are changed and not the entire DOM. Structure is a linked list, components are nodes/objects which resemble hashes. 'for' loops allow you to traverse and nested 'for' loops allow access to specific objects?

Copy link

@spitsfire spitsfire left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

React Tic Tac Toe

Major Learning Goals/Code Review

Criteria yes/no, and optionally any details/lines of code to reference
Demonstrates proper JavaScript coding style. ✔️
Correctly passes props to child components. ✔️
Correctly passes callback functions to child components and calls them to respond to user events.) ✔️
Maintains the status of the game in state. ✔️
Practices git with at least 6 small commits and meaningful commit messages Looks like you only have 5 commits, but the messages are descriptive
Uses existing stylesheets to render components ✔️

Functional Requirements

Functional Requirement yes/no
The Square component renders properly and executes the callback on a click event. ✔️
The Board component renders a collection of squares ✔️
The App component renders a board and uses state to maintain the status of the game. ✔️
Utilizes callbacks to UI events to update state ✔️

Overall Feedback

Overall Feedback Criteria yes/no
Green (Meets/Exceeds Standards) 5+ in Code Review && 3+ in Functional Requirements ✔️
Yellow (Approaches Standards) 4+ in Code Review && 2+ in Functional Requirements, or the instructor judges that this project needs special attention
Red (Not at Standard) 0-3 in Code Review or 0,1 in Functional Reqs, or assignment is breaking/doesn’t run with less than 5 minutes of debugging, or the instructor judges that this project needs special attention

Code Style Bonus Awards

Was the code particularly impressive in code style for any of these reasons (or more...?)

Quality Yes?
Perfect Indentation
Descriptive/Readable
Concise
Logical/Organized

Comment on lines +66 to +89
// shadowing the closure variable
const checkForWinner = (squares) => {
let newWinner = null;
for (let i = 0; i < 3; i++) {
// check each row
// empty string in JS is falsy
if (squares[i][0].value &&
squares[i][0].value === squares[i][1].value &&
squares[i][0].value === squares[i][2].value) {

newWinner = squares[i][0].value;
break;
// check each column
} else if (squares[0][i].value &&
squares[0][i].value === squares[1][i].value &&
squares[0][i].value === squares[2][i].value) {

const checkForWinner = () => {
// Complete in Wave 3
// You will need to:
// 1. Go accross each row to see if
// 3 squares in the same row match
// i.e. same value
// 2. Go down each column to see if
// 3 squares in each column match
// 3. Go across each diagonal to see if
// all three squares have the same value.
newWinner = squares[0][i].value;
break;
}
}

// check diagonals
if (squares[1][1].value &&

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great comments! They are nice and short but descriptive so that any coder can understand what your code is doing!

const Board = ({ squares, onClickCallback }) => {
const squareList = generateSquareComponents(squares, onClickCallback);
console.log(squareList);
// console.log(squareList);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

be sure to delete console.log lines completely before submitting!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants