当前位置: 首页 > 知识库问答 >
问题:

如何将实例传递给reactjs中组件内的函数

杜鸿彩
2023-03-14

如果问题中使用的术语不正确,请与我一起,因为这是我第一次使用react JS。我通过参考大量的博客、youtube、文档等编写了一些代码,现在我被困住了,因为它是所有东西的混合体。

我需要对一个endpoint(关于.js组件)进行get调用,该endpoint返回json数据,这些数据将被传递给(workspace.js组件),在那里呈现和显示这些数据。到目前为止,它运行良好。

下一步,有一个链接'delete'(在workspace.js的cards元素中),点击后,它应该对一个带有project_name的endpoint发出post调用。这里我无法使它工作(与常量、函数等混淆)。

下面是代码:(about.js)

import React, { useState, useEffect } from "react";
import Card from "react-bootstrap/Card";
import "./About.css";
import axios from "axios";
import Account from "./Workspace";
function About() {
  const [resp_data, setdata] = useState("");

  useEffect(() => {
    const axios = require("axios");
    axios({
      method: "get",
      headers: { "Content-Type": "application/x-www-form-urlencoded" },
      url: "http://127.0.0.1:8000/api/projects/",
    })
      .then(function (response) {
        setdata(response);
      })
      .catch(function (error) {
        console.log(error);
      })
      .then(function () {});
  }, []);

  if (resp_data != "") {
    return (
      <div>
        <Account user={resp_data} />
      </div>
    );
  } else {
    return <h2>Loading...</h2>;
  }
}

export default About;

workspace.js

import React, { Component } from "react";
import Card from "react-bootstrap/Card";

const Account = (props) => {
  function handleClick(event) {
    alert(event);
    //need to get the project_name here
    //make post call to an endpoint with project_name as data
  }
  const users = props.user.data;
  return (
    <div>
      {users.map((user) => (
        <div className="card-rows">
          <Card className="card" key={user.Id}>
            <Card.Body>
              <Card.Title>
                <b>Project : </b>
                {user.project_name}
              </Card.Title>
              <Card.Subtitle className="mb-2 text-muted">
                <b>DataSet : </b>
                {user.dataset_name}
              </Card.Subtitle>
              <Card.Subtitle className="mb-2 text-muted">
                <b>DataType : </b>
                {user.data_type}
              </Card.Subtitle>
              <Card.Link
                href="#"
                name="hello"
                className="delete"
                onClick={this.handleClick({user.project_name})} // call handleclick and the projectname should be available within the function
              >
                Delete
              </Card.Link>
              <Card.Link href="/launch" className="launch">
                Launch
              </Card.Link>
            </Card.Body>
          </Card>
        </div>
      ))}
    </div>
  );
};
export default Account;

如果有人能帮忙,那将是一个很大的帮助

共有1个答案

麻鹏鹍
2023-03-14

如果您在一个功能组件中,可以通过添加卷曲大括号来获得user道具。还要修改您的onclick。React onClick事件处理

如果开始的话,我建议您彻底阅读React文档。

这对你应该管用。

const Account = ({user}) => { 
//use curly braces around props to fetch user prop

function handleClick(project_name) {
    alert(project_name);
    //need to get the project_name here
    //make post call to an endpoint with project_name as data
}


return(
... //above code
<Card.Link
    href="#"
    name="hello"
    className="delete"
    onClick={() => handleClick(user.project_name)}  
>
    Delete
</Card.Link>
... //below
)
 类似资料:
  • 我试图从按钮类中的道具集中提取数字的值。然后在发现函数中呈现这个值。类正确显示了Number的值。但是,该函数不显示数字的任何值。 为了让它发挥作用,我已经花了一段时间来处理这个问题。但是我找不到任何解决我问题的办法。 没有错误消息。显示的预期结果:https://i.imgur.com/fr61SE0.png 实际显示结果:https://i.imgur.com/MRE0Lsj.png

  • 一个子:下拉组件 第二个子:播放列表组件

  • 问题内容: 我想将功能传递给子组件,但出现此错误。 基本上是我想做的。 var ReactGridLayout = require(’react-grid-layout’); 似乎它是在React v16中引入的。因此,将函数从父代传递给子代的正确方法是什么? 问题答案: 我发现出了什么问题。这是因为react-grid-layout。我必须将其余的属性传递给孩子。

  • 如何在不使其成为单独变量的情况下传递数组?例如,我知道这是有效的: 但我不想让数组成为变量,因为它只在这里使用。有没有办法做到这一点:

  • 人们通常如何在React应用程序中拥有“全局”数据? 例如,假设一个用户登录到我的应用程序后,我有以下数据。 但这对我来说似乎很困难,因为这意味着我必须通过每个组合传递数据,只是为了将其传递给需要它的孩子。 是否有一种React方法来管理这种类型的数据? 注意:这个示例非常简化--我喜欢将意图包装成复合,这样整个UI特性的实现细节就可以在我认为合适的时候进行彻底的更改。 编辑:我知道默认情况下,在