本文介绍了将道具发送到数字格式-材质UI TextField的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个TextField元素来处理数值字段。我想动态处理这个组件,这样它不仅可以帮助我管理信用卡格式、电话等。我正在以与Material-UI示例相同的方式使用REACTION-NUMBER-FORMAT库。我试着用道具发送"前缀"和"格式",但效果不佳。我想知道,如果我有办法的话,我应该如何寄出那些财产。提前感谢!

function NumberFormatCustom(props) {
  const { inputRef, onChange, ...other } = props;

  return (
    <NumberFormat
      {...other}
      getInputRef={inputRef}
      onValueChange={values => {
        onChange({
          target: {
            value: values.value
          }
        });
      }}
      thousandSeparator={","}
      decimalSeparator={"."}
      isNumericString
      prefix={props.prefix} //"$"
    />
  );
}

NumberFormatCustom.propTypes = {
  inputRef: PropTypes.func.isRequired,
  onChange: PropTypes.func.isRequired
};

class NumberTextField extends Component {
  state = {
    numberformat: this.props.value
  };

  handleChange = event => {
    const targetField = this.props.name;
    const targetValue = event.target.value;
    this.setState({
      ...this.state,
      numberformat: targetValue
    });
    this.props.updateCurrentUserFieldsOnChange(targetField, targetValue);
  };

  render() {
    const { fullWidth, label, name, readOnly, prefix } = this.props;
    return (
      <Fragment>
        <TextField
          fullWidth={fullWidth ? fullWidth : true}
          label={label ? label : "react-number-format"}
          name={name}
          value={this.state.numberformat}
          onChange={this.handleChange}
          InputProps={{
            inputComponent: NumberFormatCustom,
            readOnly: Boolean(readOnly),
            prefix: prefix
          }}
        />
      </Fragment>
    );
  }
}

推荐答案

您必须使用customInput道具,它允许您集成Material-UI的样式。你也可以通过几个道具来控制你想要的遮罩。另外,如果您想要前缀,只需使用前缀道具即可。1000andSeparator是一个布尔值,但默认情况下数字之间用逗号分隔,如果您喜欢空格,只需像我的示例中那样添加它

  import NumberFormat from 'react-number-format';

  import TextField from 'material-ui/TextField';

      <NumberFormat
        {...props}
        value={value}
        name={name}
        mask={mask}
        customInput={TextField}
        prefix={'$'}
        format={format || null}
        type="text"
        thousandSeparator={thousandSeparator ? ' ' : null}
        onValueChange={({ value: v }) => onChange({ target: { name, value: v } })}
      />

这篇关于将道具发送到数字格式-材质UI TextField的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-12 03:51