如何使用控制器(使用 redux 形式)实现输入类型编号
How to implement an input type number with controllers (with redux form)
我正在使用由 redux 形式包装的控制器 (-/+) 处理输入数字:
https://codesandbox.io/s/8l3qjxv2l9
我不知道如何让它工作并用控制器更新我的值。现在它仅适用于输入内部的 onChange。
我的控制器可以接收一些外部函数来更新值,但我不知道如何。当然,我不是redux和redux形式的忍者
有什么想法吗?
谢谢
你试过自定义组件中的onChange吗?看看deapihttps://redux-form.com/6.6.3/docs/api/field.md/他们说话的时候"To learn what props will be passed to your component, see the Props section below."
import React, { Component } from "react";
import PropTypes from "prop-types";
class NumberInput extends Component {
static propTypes = {
input: PropTypes.any,
onChange: PropTypes.func,
min: PropTypes.number.isRequired,
max: PropTypes.number.isRequired,
label: PropTypes.string,
errorMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.bool])
};
static defaultProps = {
onDecrement: null,
onIncrement: null,
onChange: null,
errorMessage: false
};
render() {
const {
input,
onChange,
value,
min,
max,
label,
errorMessage
} = this.props;
let val = value || min;
// MAIN
return (
<div className="number-input__content">
<div>
<button
type="button"
onClick={() => onChange(val > min && value - 1)}
>
-
</button>
<input
type="number"
pattern="[0-9]"
defaultValue={min}
value={val}
min={min}
max={max}
onChange={onChange}
{...input}
/>
<button
type="button"
onClick={() => onChange(val < max && value + 1)}
>
+
</button>
</div>
</div>
);
}
}
export default NumberInput;
我正在使用由 redux 形式包装的控制器 (-/+) 处理输入数字:
https://codesandbox.io/s/8l3qjxv2l9
我不知道如何让它工作并用控制器更新我的值。现在它仅适用于输入内部的 onChange。
我的控制器可以接收一些外部函数来更新值,但我不知道如何。当然,我不是redux和redux形式的忍者
有什么想法吗?
谢谢
你试过自定义组件中的onChange吗?看看deapihttps://redux-form.com/6.6.3/docs/api/field.md/他们说话的时候"To learn what props will be passed to your component, see the Props section below."
import React, { Component } from "react";
import PropTypes from "prop-types";
class NumberInput extends Component {
static propTypes = {
input: PropTypes.any,
onChange: PropTypes.func,
min: PropTypes.number.isRequired,
max: PropTypes.number.isRequired,
label: PropTypes.string,
errorMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.bool])
};
static defaultProps = {
onDecrement: null,
onIncrement: null,
onChange: null,
errorMessage: false
};
render() {
const {
input,
onChange,
value,
min,
max,
label,
errorMessage
} = this.props;
let val = value || min;
// MAIN
return (
<div className="number-input__content">
<div>
<button
type="button"
onClick={() => onChange(val > min && value - 1)}
>
-
</button>
<input
type="number"
pattern="[0-9]"
defaultValue={min}
value={val}
min={min}
max={max}
onChange={onChange}
{...input}
/>
<button
type="button"
onClick={() => onChange(val < max && value + 1)}
>
+
</button>
</div>
</div>
);
}
}
export default NumberInput;