gpt4 book ai didi

redux - 从 redux-devtools 更改值后选择框未更改

转载 作者:行者123 更新时间:2023-12-02 04:13:46 26 4
gpt4 key购买 nike

语言环境处于我的 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)

最佳答案

defaultValue更改为value。即

<select value={locale} onChange={(e) => this.handleChange(e)}>

说明

仅当表单字段是不受控制的组件时,才使用defaultValue。更改不受控制组件的值的唯一方法是通过用户输入。

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

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

关于redux - 从 redux-devtools 更改值后选择框未更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35011730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com