javascript - 在 React 中,数字输入是字符串而不是整数

标签 javascript reactjs

我有一个 React 组件。我从我的顶级组件向下传递 updateInventory 函数。

class Inventory extends Component {
  constructor(props) {
    super(props);
    this.state = {
      name: this.props.name,
      price: this.props.price,
      id: this.props.id
    };
    this.handleChange = this.handleChange.bind(this);
  }

  handleChange(e) {
    this.setState({
      [e.target.name]: e.target.value
    });
  }

  render(props) {
    return (
      <form onSubmit={(e)=>this.props.updateInventory(e, this.state)}>
        <input name='name' value={this.state.name} onChange={this.handleChange} />
        <input name='price' type='number' value={this.state.price} onChange={this.handleChange} />
        <button type='submit'>Update</button>
      </form>
    )
  }
};

export default Inventory;

在我的顶级组件中:

updateInventory = (e, state) => {
  let pizzaState = this.state.pizzas;
  const index = pizzaState.findIndex((pizza)=>{
    return pizza.id === state.id;
  });
  Object.assign(pizzaState[index], state);
  console.log( pizzaState );
  e.preventDefault();
};

到目前为止这似乎有效(我还没有更新我的顶级状态)但是我可以看到当我更新价格时新值是一个字符串而不是一个整数。我希望我的所有输入只有一个 handleChange 函数,因为我会添加更多,这可能吗?

最佳答案

您可以检查目标的类型和名称,并相应地处理值。

例如

this.setState({
  [e.target.name]: e.target.type === 'number' ? parseInt(e.target.value) : e.target.value
});

// or

this.setState({
  [e.target.name]: e.target.name === 'price' ? parseFloat(e.target.value) : e.target.value
});

关于javascript - 在 React 中,数字输入是字符串而不是整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46447504/

相关文章:

javascript - IE7模态对话框滚动条重叠内容

javascript - 滚动顶部与 ScrollView : why scrollTop didn't work?

reactjs - 来自react-router-redux的 "push"方法和来自react-router的 "browserHistory"有什么区别?

javascript - react native Redux : Error Can't find variable mapStateToProps

javascript - React 16 只是将数字数组渲染到映射函数中的表数据中

javascript - 使用 JavaScript 中的 API,它使用 JS 最大整数以上的 ID

javascript - 如何检查 Facebook 粉丝专页是否被点赞

javascript - 更改动态站点脚本以使用最新的 jquery 库

javascript - 通过 jQuery 在某个滚动级别更改 CSS 不起作用

javascript - 从模块返回数据以在 react 页面中呈现