Kann eine untergeordnete Komponente eine Funktion mit einem ID-Parameter an die übergeordnete Komponente übergeben?
P粉550323338
P粉550323338 2024-03-20 10:58:24
0
1
417

Ist es möglich, mit React eine Funktion mit einem ID-Parameter von einer untergeordneten Komponente an eine übergeordnete Komponente zu übergeben? Ich versuche, die Funktion als Requisite an die übergeordnete Komponente zu übergeben. Die Komponentenlösung ist App-Komponente-> TasksList-Komponente-> Ich muss also zu einer bestimmten Aufgabe weiterleiten, indem ich darauf klicke und deren individuelle ID verwende. Der Punkt ist, wenn die URL angeklickt und an die Aufgabe weitergeleitet wird, ändert sie sich in /task/009, die Aufgabenkomponente wird jedoch nicht gerendert.

https://codesandbox.io/s/test-login-page-tasks-rmfn5j?file=/src/components/Taskslist.js

//App component
const Tasks = [
  {
    id: "001",
    status: 0,
    priority: 2,
    title: "Develop website homepage",
    description:
      "Create a visually appealing and responsive homepage for the website",
    schedule: {
      creation_time: "2021-07-23T10:00:00"
    },
    author_name: "John Smith"
  },
  {
    id: "002",
    status: 1,
    priority: 1,
    title: "Implement user authentication",
    description: "Add user authentication feature to the website",
    schedule: {
      creation_time: "2021-07-24T14:30:00"
    },
    author_name: "Sarah Lee"
  }
  ]
  
  function App() {
  const [tasks, setTasks] = useState(Tasks);
  return (
  
    <Route path="/taskslist">
      <Taskslist Tasks={tasks} />
    </Route>
  )

// Parent component
import React from "react";

const Taskslist = ({ Tasks }) => {
  const history = useHistory();

  const goToTask = (taskId) => {
    history.push(`/task/${taskId}`);
  };

  return (
    <Task
      Tasks={Tasks.filter((task) => task.status === 0)}
      goToTask={goToTask}
    />
}

//Child component

import React from "react";

const Task = ({ Tasks, goToTask }) => {
  return (
    <div className="wrapper">
      {Tasks.map((task) => (
        <div key={task.id} onClick={goToTask(task.id)}>
          <h3>{task.title}</h3>
        </div>
      ))}
    </div>
  );
};

export default Task;

P粉550323338
P粉550323338

Antworte allen(1)
P粉562845941

多个问题

  1. 这条线是我能够看到第一期的地方。 您正在立即调用 goToTask。
  2. 在您的应用程序组件中,您不会为各个任务路由渲染任务组件。要解决此问题,您可以在应用程序组件中为单个任务定义一个路由,并为该路由渲染任务组件,如下所示:

  3. function App() {
      const [tasks, setTasks] = useState(Tasks);
    
      return (
        
          
            
              
            
            
              
            
          
        
      );
    }
    
    1. Task 组件中,您需要确保从 URL 中过滤所选任务。使用 useParams()
    import { useParams } from "react-router";
    
    const Task = ({ Tasks }) => {
      const { id } = useParams();
      const task = Tasks.find((task) => task.id === id);
    
      return (
        

    {task.title}

    {task.description}

    {/* ... */}
    ); };

    让我知道是否需要进一步的帮助。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage