You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native表单提交:选传参还是父组件状态获取值?

回答:当然可以在React Native中使用第一种传参方式!

你完全不需要纠结——第一种直接在提交时传递表单值的方式在React Native里是完全可行的,而且非常适合你这种「无需实时操作状态」的场景。

两种方式的适用场景对比

  • 方式一(提交时传参):
    这种方式更轻量化,不需要实时同步父组件状态,只在提交动作触发时一次性传递数据。代码逻辑更直接,减少了不必要的setState调用,适合不需要实时校验、预览表单内容的场景。
    你的实现代码可以保持原样:
    子组件Child.js:

    <Button
       title="Save"
       onPress={() => this.props.onSubmit(myformvalue)}
    />
    

    父组件App.js:

    onSubmit (value) {
        fetch('myip', {
          method: 'POST',
          body: JSON.stringify({
             customername: value,
          }),
        })
    }
    
  • 方式二(受控组件实时同步):
    这是React(包括React Native)官方推荐的受控组件模式,但它的核心优势是支持实时状态同步——比如你需要实时显示输入预览、做字段校验、或者表单内容需要在父组件其他地方复用的时候,这种方式更合适。但如果你的场景不需要这些,就没必要为了「遵循推荐」而增加额外的状态同步逻辑。

额外小提示

如果你的表单有多个字段,第一种方式可以把所有表单值打包成一个对象传递,比如:

// Child.js里
onPress={() => this.props.onSubmit({ name: myNameValue, email: myEmailValue })}

// App.js里
onSubmit(formData) {
  fetch('myip', {
    method: 'POST',
    body: JSON.stringify(formData),
  })
}

这样依然能保持代码的简洁性。

内容的提问来源于stack exchange,提问作者craftdeer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:16:03