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

React.js中Props.email属性值无法在页面正常渲染显示问题

问题根因

页面实际渲染的<Ternaryi />是写在App组件return结构里的那一个,你只给它传了name={count}属性,根本没传email属性。
写在getFormData提交事件函数里的<Ternaryi email={"hyy"}/>是无效死代码:React组件只有放在return的JSX模板中、被渲染流程挂载到DOM树才会生效,在普通事件函数里直接写组件标签不会触发任何渲染,自然也不会把email属性传到页面上的组件实例中。
另外原代码还有两个隐藏问题:

  • select选项的value默认是字符串类型,直接和数字1/2/3做判断会出现类型不匹配的逻辑异常
  • 未选择选项直接提交时,count为null会直接走到三元判断最后一个分支,显示不符合预期的"Welcome user 3"
修复方案
  • 新增email对应的state状态,在表单提交时更新该状态
  • 给实际渲染的Ternaryi组件传入email属性
  • 给select选项绑定明确的value值,转成数字类型避免类型判断错误
  • 补全空状态判断,优化展示逻辑
修复后完整代码

App.js

import "./App.css";
import React, { useState } from "react";
import Ternaryi from "./Ternaryi";

function App() {
  const [count, setCount] = useState(null);
  const [email, setEmail] = useState("");

  function getFormData(e) {
    e.preventDefault();
    console.log(count);
    // 提交时更新email值,触发组件重渲染
    setEmail("hyy");
  }

  return (
    <div className="App">
      <form onSubmit={getFormData}>
        <select onChange={(e) => setCount(Number(e.target.value))}>
          <option value={null}>select option</option>
          <option value={1}>1</option>
          <option value={2}>2</option>
          <option value={3}>3</option>
        </select>
        <button type="submit">submit</button>
      </form>
      {/* 给渲染的组件同时传入name和email属性 */}
      <Ternaryi name={count} email={email}/>
    </div>
  );
}

export default App;

Ternaryi.js

function Ternaryi(props) {
    return (
      <div>
        <h1>email = {props.email || '等待提交获取email'}</h1>
        {props.name === 1 ? <h1>Welcome user 1</h1>
          : props.name === 2 ? <h1>Welcome user 2</h1>
          : props.name === 3 ? <h1>Welcome user 3</h1>
          : <h1>请选择对应选项</h1>
        }
      </div>
    )
}
  
export default Ternaryi;

修复后提交表单,就能正常在页面看到打印的email值,count对应的欢迎内容也能按选择正确匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:33:12