【问题标题】:i want the data that is in form component to be shown when pickup button is clicked我希望在单击拾取按钮时显示表单组件中的数据
【发布时间】:2020-12-24 06:47:58
【问题描述】:

我希望在单击拾取按钮时显示表单组件中的数据。当单击“是”或“否”按钮时,来自 myvehicles 的数据将输入到拾取组件中。我试过这样,但它不起作用。

import React,{ useState } from 'react'
import './Pickup.css'
import logo from './images/logo.png'
import { Link, useHistory } from "react-router-dom";
import InfoYes from './InfoYes'
import InfoNo from './InfoNo'




function Pickup() {
    const [showInfoYes, setShowInfoYes] = useState(false);
    const [showInfoNo, setShowInfoNo] = useState(false);
    const history = useHistory()
    
    return (
        
        
      
        <div className="pickup">
        
  
            <div className="vehicles__navbar">

<Link to="/" className="header__link">
    <img
    className="navbar__logo"
    src={logo}
    alt="logo"
    />
</Link>

<button className="navbar__button" onClick={() => history.push('/')}>Logout</button>

</div>

            <div className="pickup__info">
            <h1 className="h1__pickup">do you want bluebook pickup service?</h1> 
            <div className="pickup__button">
            <button className="yes__button" onClick={() => setShowInfoYes(!showInfoYes)}>yes</button>
            <button className="no__button" onClick={() => setShowInfoNo(!showInfoNo)}>no</button>
            </div>
            {showInfoYes && <InfoYes setShowInfoYes={setShowInfoYes} />}            </div>
            {showInfoNo && <InfoNo setShowInfoNo={setShowInfoNo} />}  
            
        </div>
    )
}

export default Pickup

【问题讨论】:

  • 你能告诉我们什么不起作用吗?问题可能来自您的 InfoYes 或 InfoNo 组件。
  • @jperl 当我单击是或否按钮时,会出现一个带有 h1 标题的弹出窗口,但没有我在先前状态中输入的信息。我想在单击“是”或“否”按钮时获取先前的组件状态值并在弹出窗口中显示。
  • 首先我填写表格并单击保存按钮并将值保存在状态中,然后单击下一步按钮,然后加载询问是或否的拾取组件,我单击是或否任何按钮我得到弹出与 h1 类似 select vehicle , vehicle type 等并排从先前表单组件的状态中获取的值。另外我更新了代码并提供了代码框链接。
  • 请仔细看一看,

标签: reactjs react-hooks react-props react-context


【解决方案1】:

我认为您可以通过条件渲染来实现这一点。 其中涉及 if 语句和真假条件。

请查看此文档以了解其工作原理。 Documentation (Reactjs.org 有非常棒的文档,我真的鼓励你去阅读它。)

在您的代码中没有任何地方,我看到您的状态设置为 TRUE 以使其呈现。 您需要创建一个 onClick 处理程序来将其设置为 true 或 false。

一个简单的例子是:

    const [userClicked, setUserClicked] = useState(false);
    
    { userClicked ? 

    ( <button onClick={() => setUserClicked(false)> No </button> 

   ) : ( 

     <button onClick={() => setUserClicked(true)> Yes </button> 
    
    )}

这是在 react 中生成 if/then 语句的三元运算符的简写。 这将是最容易实现您的目标的方法,尽管我建议您对此进行更多研究!

{userClicked ? ( ) : ( ) }

你也可以拿出来:

const [showInfoYes, setShowInfoYes] = useState(false);
const [showInfoNo, setShowInfoNo] = useState(false);

这有点多余,因为您试图实现可以在单一状态下完成的事情。

【讨论】:

  • 不,我不想要这个条件,因为是和否按钮都显示信息,唯一的区别是一个会有拾取值是或否。主要问题是单击“是”或“否”后进入的车辆内部的信息在单击“是”或“否”按钮时不显示。
  • 啊,我明白了,正如我之前所说,您的代码中没有任何地方将您的状态设置为 true。他们都在发布虚假陈述。
  • setShowInfoYes(!showInfoYes) 这是切换状态的一段代码。虽然它应该以这种方式完成: setShowInfoYes(prevState => !prevState)
  • 你说能不能在这个codeandbox里做demo?
猜你喜欢
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
相关资源
最近更新 更多