react 防止form中的按钮触发表单submit提交事件

class Counter extends React.Component {

  constructor(props) {
    super(props);
    this.state={
      checkout:true,
      userNum:1,
    }
  }
  handleChange = (event) => {
    console.log(event)
    let obj={
      userNum:()=>{
        console.log(event.target.value)
      },
      checkout:()=>{

        this.setState({
          checkout:event.target.checked,
        })
        console.log(event.target.checked,'修改状态',this.state)
      }
    }
    obj[event.target.name]();
    // const target = event.target;
    // const value = target.type === 'checkbox' ? target.checked : target.value;
    // const name = target.name;
 
    // this.setState({
    //   [name]: value
    // });
  }
  edidCheckout=(e)=>{
    e.nativeEvent.stopImmediatePropagation() //阻止事件冒泡
    e.stopPropagation();
    this.setState({
      checkout:!this.state.checkout,   
      userNum:this.state.userNum+1
    })
    console.log(this.state.checkout)
  }

  render() {

    return <div>
        <input type="text" value={this.props.myDataProp} onChange={this.props.updateStateProp} />
        <h4>{this.props.myDataProp}</h4>

        <form onSubmit={this.props.updataSubimit}>
        <label>
          <select value={this.props.selectValue} onChange={this.props.updataSelect} name='selct'> 
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
          </select>
          </label>
          <label>
          是否确认  <input
            name="checkout"
            type="checkbox"
            checked={this.state.checkout}
            onChange={this.handleChange} />
          </label>
          <label>
            user 数量
            <input type='number' value={this.state.userNum} name='userNum' onChange={this.handleChange} />
          </label>
          <input type="submit" value="提交" />
          <br/>
          <button onClick={this.edidCheckout}>修改状态</button>
        </form>
        </div>;
  }
}

在这串代码中我点击form中的button发现他会触发表单原本的submit事件,后来在网上找到的阻止冒泡事件也没有效果,最后查询资料发现,只要在button按钮中添加type=button就不会触发表单的提交事件了

  <button type='button' onClick={this.edidCheckout}>修改状态</button>

初学react记录一下

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值