Giter Site home page Giter Site logo

react-forms-lab-v-000's Introduction

React Controlled Components Lab

Overview

In this lab, you'll write forms, write and use controlled components, and write validation for form components.

Controlled Components

Controlled Components

Now that we know how to handle form elements in React and how to use controlled components, it's time to put that knowledge to the test. This lab is fairly extensive, but you'll use many core React concepts here that will surface again and again. Time to get some practice in!

General notes for this lab:

  • Most of the DOM is pre-written for you in these exercises. Please do not remove anything that is already in the file โ€” most of it is necessary to ensure that the tests run correctly.
  • When instructed to save a value in the state, it doesn't matter what key you use, as long as it's in there!

TwitterMessage

Tweet Tweet Tweet

  1. Open the components/TwitterMessage.js file.
  2. This component takes one prop, maxChars, which is a number representing the maximum amount of characters a message can have.
  3. You'll find an <input type="text"> in this component. Make this a controlled component by adding the necessary props to the <input> element. Its value should be saved in the component's state.
  4. Show the remaining characters in the component. It doesn't matter how you render it, as long as the number is correct. No need to guard against input that is too long โ€” you can let the counter reach negative values.

LoginForm

  1. Open the components/LoginForm.js file.
  2. This component takes one prop, onSubmit, which is a function that gets called when the form is being submitted.
  3. You'll find two inputs in this component: <input type="text"> and <input type="password">. Make this a controlled component by adding the necessary props to these inputs. Their values should be saved in the component's state.
  4. An example of an input would look like:
    <input
      id="test-username"
      type="text"
      name="username"
      value={this.state.username}
      onChange={this.handleInputChange}
    />
  5. Remember that you can retrieve the inpiut name and value of an event.target from the JS event.
  6. Add the necessary event handler to the <form> element in order to call the onSubmit callback prop.
  7. The onSubmit callback prop should only be called if both fields are filled in (with any value).

PoemWriter

Bo Burnham

  1. Open the components/PoemWriter.js file.
  2. You'll find one <textarea> in this component. Make this a controlled component. Recall that controlled components in React render dynamically based on some piece of props or state. Its value should be saved in the components state.
  3. You'll also find an error element in the markup. This element should only be shown if the poem is not valid.
  4. The rules for a valid poem structure are as follows:
    • The poem has three lines.
    • The first line has five words.
    • The second line has three words.
    • The third line has five words.
  5. Be sure to account for users accidentally adding too many spaces! This means that ' I am a furry dog ' is not a valid first line of the poem.
  6. Make sure the error message is still showing if the user deletes all of their content from the textarea box

Resources

react-forms-lab-v-000's People

Contributors

lukeghenco avatar realandrewcohn avatar thomastuts avatar annjohn avatar gj avatar pletcher avatar dakotalmartinez avatar kjleitz avatar maxwellbenton avatar lizbur10 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.