簡體   English   中英

反應狀態作為道具傳遞給子組件未顯示

[英]React state passed as prop to child component not showing

我用鈎子創建了一個狀態。 然后,使用鈎子從不同的組件修改它的值。 然后我將該狀態發送到第三個組件,該組件根據 Chrome 的開發人員工具接收它,但我無法顯示它! 我要瘋了嗎?

創建狀態

//Paso en el que estoy del stepper
let [stepper, modificarStepper] = useState({
    step: 1,
    datosFormCliente:{
        nombreCliente:'',
        apellidoCliente:'',
        cuitCliente:'',
        dir:'',
        trabajaEn:'',
        cel: 0,
    },
    urlPagare:'',
    urlBoletaSueldo:''
});
let {step, datosFormCliente} = stepper;

我沒有展示我如何修改狀態,因為我知道它使用它的鈎子正確完成了:我修改了 stepper.datosFormCliente 內容。 然后,我將它傳遞給一個子組件:

<ControlarDatos
  datosFormCliente={datosFormCliente}
  clickPasoStepper={clickPasoStepper}
/>

然后通過 ControlarDatos 組件,chrome 的開發工具顯示: https : //ibb.co/Vxm1Mvv Chrome 的開發工具顯示狀態動態變化並獲取子組件

所以現在問題是

在子組件上,我無法簡單地 ECHO 道具值。 這是我的代碼:

import React, { Fragment } from "react";

const ControlarDatos = (datosFormCliente) => {
  const {
    nombreCliente,
    apellidoCliente,
    cuitCliente,
    dir,
    trabajaEn,
    cel,
  } = datosFormCliente;

  return (
    <Fragment>
      <div className="alert alert-danger" role="alert">
        <h4 className="alert-heading">Controlar datos y confirmar venta</h4>
        <p>
          Ya casi terminas, solo tenés que controlar los datos del comprador y
          confirmar la venta:
        </p>
        <hr />
        <p>Nombres: {nombreCliente} </p>
        <p>Apellidos: {apellidoCliente} </p>
        <p className="mb-0"></p>
        <hr />
        <button className="btn btn-danger">Confirmar venta!</button>
      </div>
      {nombreCliente}
    </Fragment>
  );
};

export default ControlarDatos;

控制台沒有給我任何錯誤。 項目編譯。 仍然無法回顯這些值。

這是因為您沒有解構datosFormCliente道具,而是將props命名為datosFormCliente 因此,它不是您的datosFormCliente道具,而是props對象。

而是使用:

const ControlarDatos = ({ datosFormCliente }) => {

@devserkan 的回答是正確的。

也只是一個小小的改進,您不需要使用Fragment 相反,您可以使用<> ... </>
這是同一件事。

所以它會是這樣的:

import React from 'react';

const ControlarDatos = ({ datosFormCliente }) => {

const {
  nombreCliente,
  apellidoCliente,
  cuitCliente,
  dir,
  trabajaEn,
  cel
} = datosFormCliente;

  return ( 
    <>
      <div className="alert alert-danger" role="alert">
        <h4 className="alert-heading">Controlar datos y confirmar venta</h4>
        <p>Ya casi terminas, solo tenés que controlar los datos del comprador y confirmar la venta:</p>
        <hr/>
        <p>Nombres: {nombreCliente} </p>
        <p>Apellidos: {apellidoCliente} </p>
        <p className="mb-0"></p>
        <hr/>
        <button className="btn btn-danger">Confirmar venta!</button>
      </div>
      {nombreCliente}
    </>
  );
}

export default ControlarDatos;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM