Как я могу начать работу с функциональным программированием с использованием реакции? - PullRequest
0 голосов
/ 08 января 2019

У меня есть контролируемый компонент, который обновляет входы, используя функциональное программирование, я хочу знать, нужно ли мне это делать:

class ScreensEditSeries extends Component{
constructor(props){
    super(props)  
    this.state = {
        id: '',
        name: '',
        status: '',
        genre: '',
        notes: ''
    }
}
...
handleChange = field => event => {
    this.setState({
        ...this.state,   //is necessary do this for return a new full state?
        [field] : event.target.value
    })
}
...
render(){
return(
...
                        Name: <input type="text" value={this.state.name} onChange={this.handleChange('name')} className="form-control" /><br />
                        Status: {<span>&nbsp;</span>} 
                        <select value={this.state.status} onChange={this.handleChange('status')}>
                            {Object.keys(statsuser)
                                .map( key => <option key={key}>{statsuser[key]}</option>)}
                        </select><br/><br/>
                        Genre: {<span>&nbsp;</span>} 
                        <select value={this.state.genre} onChange={this.handleChange('genre')}>
                            {Object.keys(statsgenre)
                                .map(key => <option key={key}>{statsgenre[key]}</option>)}
                        </select><br/><br/>
                        Notes: <textarea type='text' value={this.state.notes} onChange={this.handleChange('notes')} className="form-control"></textarea><br />
...
)}

Я изучаю функциональное программирование и считаю необходимым распространять состояние перед обновлением, чтобы генерировать новое состояние, а не просто обновлять его. Но это требует больше памяти и процессорного процесса. Рекомендуется ли это делать?

1 Ответ

0 голосов
/ 08 января 2019

Нет, это не обязательно, setState будет изменять только переменные, указанные в JSON, который вы предоставляете. В вашем случае будет изменен только атрибут значения field.

Деконструкция вашего состояния не требуется, если вы не хотите изменять вложенное свойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...