【发布时间】:2016-12-26 18:31:30
【问题描述】:
我希望用户能够输入最多 2000 的数字,超过 2000 的任何数字都将简单地作为“2000”反馈到输入中。
<input type="number" className="no-spin"
min="0" max="2000"
value={???}
{...eval(`${meal}_salt_amt_1`)} />
顺便说一句,'max' 属性只会阻止用户使用向上箭头来增加 2000 以上。
而且 redux-form 的 'validate' 功能不会限制可以输入的内容。
这是我如何将值(状态)限制为 2000...
export function updateStats(values) {
for (var value in values){
if (value.search('salt_amt') >= 0) {
if ( values[value] > 2000) values[value] = 2000;
}
}
return {
type: UPDATE_STATS,
stats: JSON.parse(JSON.stringify(values))
};
}
...到目前为止一切顺利,因为在我的 DevTools redux 插件中,我可以看到这些值的状态在 2000 时达到顶峰。
但是我如何强制该状态回到我的 redux-form 输入字段中?
将状态映射到道具并使用道具不起作用。这样做可以让我输入任何超过 2000 的数字...
function mapStateToProps(state) {
return {
...
breakfast_salt_amt_1: state.stats.breakfast_salt_amt_1,
...
}
}
<input type="number" className="no-spin"
min="0" max="2000"
value={breakfast_salt_amt_1}
{...breakfast_salt_amt_1} />
而且仅仅使用状态也不行......
<input type="number" className="no-spin"
min="0" max="2000"
value={state.stats.breakfast_salt_amt_1}
{...breakfast_salt_amt_1} />
// => Uncaught TypeError: Cannot read property 'stats' of null
我忘记了什么?
【问题讨论】:
标签: reactjs redux redux-form