我使用redux表单并尝试创建一个Field组件,如下所示:
<Rating
stop={10}
initialRate={selector(this.props.state, 'age')}
onRate={(rate) => this.onRateChange(rate)}
onChange={(value) => { this.changeRate("name", value) } }
/>
<span className="label label-default" id="label-onrate">{this.state.label}</span>
<Field
name="age"
type="number"
component={renderField2}
/>
RateForm = reduxForm({
form: 'rateForm'
})(RateForm);
const selector = formValueSelector('rateForm');
const mapStateToProps = state => {
return {
};
};
export default connect(mapStateToProps)(RateForm);
我遇到的问题是initialRate
无效...以下内容未返回值:
selector(this.props.state, 'age')
因为字段名称是动态的,所以我需要避免:
在mapStateToProps中定义特定的字段名称。
我对redux-form formValueSelector做错了什么,不为initialRate提供值?
答案 0 :(得分:2)
您可以这样做:
import { getFormValues } from 'redux-form/immutable'
getFormValues
将返回与提供的form name
对应保存的值。
const mapStateToProps = state => {
const formState = getFormValues('rateForm')(state)
console.log('formState...', formState)
return formState
}
这对我来说很好。我得到的所有Field
组件的值都是特定于此表单的值,例如rateForm
。
有关详情,请访问here。
答案 1 :(得分:1)
来自文档:
从
formValueSelector()
返回的函数具有以下内容 结构:选择器(状态:对象,...字段:字符串)
state : Object [required]
给予
mapStateToProps
的全局Redux状态。...field : String [required]
您要选择的字段或字段。如果您只提供一个 字段名称,该函数将返回该字段的值。如果你 提供多个字段名称,它将返回一个对象映射 字段到值。如果你的领域是&#34;深&#34; (即有一个或多个.in 这个名字),你得到的结构也会很深。例如如果你的 字段为
'a.b'
和'a.c'
,结果结构为{ a: { b:'bValue', c: 'cValue' } }.
在您的情况下,您没有从mapStateToProps返回任何内容,
您可以在Rating组件中使用选择器,而不是在mapStateToProps中使用它并像
一样使用它<Rating
stop={10}
initialRate={selector(this.props.state, 'age')}
onRate={(rate) => this.onRateChange(rate)}
onChange={(value) => { this.changeRate("name", value) } }
/>
const selector = formValueSelector('rateForm');
const mapStateToProps = state => {
return {
state
};
};
上面的示例假设props
组件可以使用Rating
。
答案 2 :(得分:0)
@Ritesh指出解决方案:
Analyze APK...
希望这对某人有帮助!