更改redux devtools中的值后,选择框不更改

更改redux devtools中的值后,选择框不更改,redux,redux-devtools,Redux,Redux Devtools,区域设置处于我的redux应用程序状态。通过react devtools(还原选项)更改其值会更改段落内部值,但不会更改“选择框”值。 如果它再次渲染,它不应该与p标记内的值相同吗 import React, {Component, PropTypes} from 'react' import {defineMessages, injectIntl, intlShape} from 'react-intl' const messages = defineMessages({ spanish:

区域设置处于我的redux应用程序状态。通过react devtools(还原选项)更改其值会更改段落内部值,但不会更改“选择框”值。 如果它再次渲染,它不应该与p标记内的值相同吗

import React, {Component, PropTypes} from 'react'
import {defineMessages, injectIntl, intlShape} from 'react-intl'
const messages = defineMessages({
  spanish: {
    id: 'languageSelector.spanish',
    description: 'Select language',
    defaultMessage: 'Spanish'
  },
  english: {
    id: 'languageSelector.english',
    description: 'Select language',
    defaultMessage: 'English'
  },
  french: {
    id: 'languageSelector.french',
    description: 'Select language',
    defaultMessage: 'French'
  }
})

class LanguageSelector extends Component {
    render () {
      const {formatMessage, locale} = this.props.intl
      return (
        <div>
        <select defaultValue={locale} onChange={(e) => this.handleChange(e)}>
                <option id='es' value='es'>{formatMessage(messages.spanish)}</option>
                <option id='fr' value='fr'>{formatMessage(messages.french)}</option>
                <option id='en' value='en'>{formatMessage(messages.english)}</option>
        </select>
        <p>{locale}</p>
        </div>
        )
    }
    handleChange (e) {
      this.props.onChange(e.target.value)
    }
}

LanguageSelector.propTypes = {
  intl: intlShape.isRequired,
  onChange: PropTypes.func.isRequired
}
export default injectIntl(LanguageSelector)
import React,{Component,PropTypes}来自“React”
从“react intl”导入{defineMessages,injectIntl,intlShape}
常量消息=定义消息({
西班牙文:{
id:“languageSelector.spanish”,
描述:“选择语言”,
defaultMessage:“西班牙语”
},
中文:{
id:'languageSelector.english',
描述:“选择语言”,
defaultMessage:“英语”
},
法语:{
id:“languageSelector.french”,
描述:“选择语言”,
defaultMessage:'法语'
}
})
类语言选择器扩展组件{
渲染(){
const{formatMessage,locale}=this.props.intl
返回(
此.handleChange(e)}>
{formatMessage(messages.西班牙语)}
{formatMessage(messages.french)}
{formatMessage(messages.english)}
{locale}

) } 手变(e){ this.props.onChange(e.target.value) } } LanguageSelector.propTypes={ intl:intlShape.isRequired, onChange:PropTypes.func.isRequired } 导出默认injectIntl(语言选择器)
默认值
更改为
。i、 e

<select value={locale} onChange={(e) => this.handleChange(e)}>
this.handleChange(e)}>
解释 仅当表单字段是非受控组件时,才使用
defaultValue
。更改非受控组件值的唯一方法是通过用户输入

如果使用
,则表单组件被视为受控组件。通过显式设置值,可以在后续渲染中更改其值。受控组件还必须有一个
onChange
处理程序,您的处理程序就是这样

有关受控/非受控表单组件的更多信息,请参阅