【问题标题】:How do I send an array to a child component in React?如何将数组发送到 React 中的子组件?
【发布时间】:2022-01-12 12:13:21
【问题描述】:

我想将数组 inputArrival 和 inputBurst 发送到子组件 Barchart.js。但是每当我这样做时,只会发送我输入的第一个元素,而不是其他项目。基本上我想要的是,当数据被输入到 Entrytable.js 时,它会立即得到反映。 EntryTable.js

import React,{useState} from 'react';
import './tableEdit.css';
import Barchart from './Barchart';

const EntryTable = (props) => {
    const entry = props.numOfEntries;
    const [inputArrival, setInputArrival] = useState(Array(entry).fill(""));
    const [inputBurst, setInputBurst] = useState(Array(entry).fill(""));
  
  
    function changeArrival(index) {     
      return (e) => {
       setInputArrival((values) =>
          values.map((value, i) => (i === index ? e.target.value : value)));};
    }
    function changeBurst(index) {
      return (e) => {  
     setInputBurst((values) =>
          values.map((value, i) => (i === index ? e.target.value : value))         
        );
      };
    }
    const ArrayEntry = Array.from({ length: entry}).map((_, i) => (
      <tr key={i}>
          <td >P{i}</td>
          <td >
            <input            
              type="number"
              value={inputArrival[i]}
              onChange={changeArrival(i)}             
            />
            ms
          </td>
          <td >
            <input            
              type="number"
              value={inputBurst[i]}
              onChange={changeBurst(i)}            
            />
            ms
          </td>
        </tr>
    ));
     return (
      <div  c>
        <table>
          <thead>
            <tr>
              <th>Process</th>
              <th>Arrival Time</th>
              <th>Burst Time</th>
            </tr>
          </thead>
          <tbody>{ArrayEntry}</tbody>
        </table>
        <button>Click Me</button>
        <Barchart selected_val={entry} arrivalArray={inputArrival} ></Barchart>
      </div>
    );
  };
export default EntryTable

Barchart.js

import React,{useState,useEffect} from 'react'
const Barchart=(props)=>{    
  const sel = props.selected_val; 
 var ar1=props.arrivalArray;
 console.log(ar1);
}export default Barchart;

【问题讨论】:

标签: javascript html reactjs react-hooks use-state


【解决方案1】:

据我所知,我不确定问题出在哪里:

  • 我做了什么?

首先:正如 Tasos 所说,将所有变量转换为let

第二个:为const entry分配了一个值5 image here

第三:为你想要的另一个数据数组添加了一个prop,并将其传递给子组件Barchart.jsimage here

结果如下: image here

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • 非常感谢。完成所有这些并分配 const entry=5。似乎可以完成这项工作,但是每当我使用道具来获取价值时,它似乎都不起作用。
  • 好的,所以我的建议是在你的父元素中简单地console.log(props) 并且你将能够调试它。干杯!
【解决方案2】:

运行你的代码,即使你有一些改进要添加到它,除此之外它似乎工作。

唯一的区别是在Barchart.js 中返回一些东西。也许尝试在Barchart.js 中返回null,它可能会抛出一个静默错误。

我建议也使用 linter 进行代码样式设置。

【讨论】:

  • 因为我的数组inputArrivalinputBurst 可以容纳的最大值是8。``` const [inputArrival, setInputArrival] = useState(Array(8).fill("")) ; const [inputBurst, setInputBurst] = useState(Array(8).fill("")); ```用道具的值填充它会导致问题,但现在它已修复
猜你喜欢
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 2019-09-07
  • 2021-06-22
  • 2020-12-18
  • 2021-08-24
相关资源
最近更新 更多