آموزش جاوا اسکریپت, ری اکت(ReactJS)

کار با فرم ها در ری اکت

کار با فرم ها در ری اکت یکی از موارد مهم در روند یادگیری این کتابخانه محبوب و قدرتمند می باشد.

کار با فرم ها در ری اکت

کار با فرم ها در ری اکت

می خواهیم مقادیر ورودی در یک textbox رو مدیریت کنیم.

برای این کار باید مقدار رو درون state ذخیره کنیم. و از این پس برای اعتبار سنجی، ارسال به سرور و سایر کار با state سروکار داریم.

هر تگ فرمی که به فایل اضافه می کنیم باید موارد زیر را برای آن انجام دهیم:

1. اضافه کردن ویژگی های onChange , Value

				
					<input type="text" value={} onChange={} />
				
			

2. تعریف مقدار value در state و نسبت دادنش به تگ

				
					 state = {
        username:'',
    }
<form>
 <label>Username: </label>
 <input type="text" value={this.state.username} onChange={} />
</form>
				
			

3.تعریف یک تابع جهت مدیریت onChange چون بدون آن امکان تایپ و یا تغییر محتوای تگ ها نیست

				
					handleUserChange = (event) =>{
    this.setState({
        username:event.target.value
    })
 <input type="text" value={this.state.username} onChange={this.handleUserChange} />

				
			

در نهایت کد فایل ما به شکل زیر خواهد بود:

				
					import React, { Component } from 'react';
 
class Form extends Component {
    state = {
        username:'',
    }
 
    handleUserChange = (event) =>{
    this.setState({
        username:event.target.value
    })
 
    }
 
    render() {
        return (
            <form>
                <label>Username: </label>
                <input type="text" value={this.state.username} onChange={this.handleUserChange} />
            </form>
        );
    }
}
 
export default Form;

				
			

ما برای هر فیلدی که به فرم اضافه  میکنیم باید مراحل فوق رو دوباره برای آن تکرار کنیم.

حالا فرم رو گسترش می دیم با اضافه کردن چند تگ دیگه:

				
					class Form extends Component {
    state = {
        username:'',
        comment:'',
        topic:'React',
    }
 
    handleUserChange = (event) =>{
    this.setState({
        username:event.target.value
    })
}
 
    handleChangeComment = (event) => {
        this.setState({
            comment:event.target.value
        })
    }
 
    handleChangeTopic = (event) => {
        this.setState({
            topic:event.target.value
        })
    }
 
    handleSubmit = (e) => {
        alert(
              [this.state.username,
              this.state.comment,
              this.state.topic]
            )
            e.preventDefault()
        //alert("Bingo")
    }
render() {
        return (
           
            <form onSubmit={this.handleSubmit}>
                <div>
                    <label>Username: </label>
                    <input type="text" value={this.state.username} onChange={this.handleUserChange} />
                </div>
                <div>
                    <label>Comments: </label>
                    <textarea value={this.state.comment} onChange={this.handleChangeComment} />
                </div>
                <div>
                    <label>Topic:</label>
                    <select value={this.state.topic} onChange={this.handleChangeTopic}>
                        <option value="React">React</option>
                        <option value="Angular">Angular</option>
                    </select>
                </div>
                <button type='submit'>send</button>
            </form>
           
        );
    }
}
 
export default Form;
				
			

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *