正在从API获取响应.API响应

API response : 

    0:
    Camera_Number: "Camera_1"
    Company_Name: "Fraction Analytics Limited"
    Floor Number: "Ground_Floor"
    Group_Name: "Group_1"
    Video_Name: "http://localhost:4000/video/0"

将数据填充到表中后,创建一个按钮,然后ag网格如下所示

enter image description here

然后使用fetch调用API.在将响应存储到usestate之后,我目前正在将所有视频映射到button和II click button.它会打开多个视频,但我一次只想要一个视频,但我不知道如何正确地一次播放一个视频.我感谢你的帮助.这件事我已经坚持了好几天了.

应用程序.js公司

const initialValue = { Name: "", Floor: "", Group: "", Camera: "", Videos: "" };

export default function App(data, handleFormSubmit) {
  const { id } = data;
  const actionButton = (params) => {
    setResponse(params.response);
    setOpen(true);
  };

  const [response, setResponse] = useState(0);
  const [open, setOpen] = React.useState(false);
  const [formData, setFormData] = useState(initialValue);
  const handleClose = () => {
    setOpen(false);
    setFormData(initialValue);
  };

  const onChange = (e) => {
    const { value, id } = e.target;
    // console.log(value,id)
    setFormData({ ...formData, [id]: value });
  };

  const columnDefs = [
    { headerName: "Name", field: "Company_Name", filter: "agSetColumnFilter" },
    { headerName: "Floor", field: "Floor Number" },
    { headerName: "Group", field: "Group_Name" },
    { headerName: "Camera", field: "Camera_Number" },
    { headerName: "Videos", field: "Video_Name" },
    {
      headerName: "Actions",
      field: "Video_Name",
      cellRendererFramework: (params) => (
        <div>
          <Button
            variant="contained"
            size="medium"
            color="primary"
            onClick={() => actionButton(params)}
          >
            Play
          </Button>
        </div>
      ),
    },
  ];

  const onGridReady = (params) => {
    console.log("grid is ready");
    fetch("http://localhost:8000/get_all")
      .then((resp) => resp.json())
      .then((resp) => {
        console.log(resp.results);
        setResponse(resp.results);
        params.api.applyTransaction({ add: resp.results });
      });
  };
  return (
    <div className="App">
      <h1 align="center"> React FastAPI Integration</h1>
      <h3> API Data </h3>
      <div className="ag-theme-alpine" style={{ height: "400px" }}>
      </div>
      <div>
          <DialogContent>
            <iframe width="420" height="315" title="videos" src={id} />
          </DialogContent>
          ;
          <DialogActions>
            <Button onClick={handleClose} color="secondary" variant="outlined">
              Cancel
            </Button>
            <Button
              color="primary"
              onClick={() => handleFormSubmit()}
              variant="contained"
            >
              {id ? "Update" : "Download"}
            </Button>
          </DialogActions>
        </Dialog>
      </div>
    </div>
  );
}

多个视频同时打开,我不知道如何正确地一次播放一个.我感谢你的帮助.这件事我已经坚持了好几天了.

一次打开多个视频.但我一次要一个视频

enter image description here

推荐答案

无需使用按钮的单击处理程序.您无法使用该选项获取行数据.

为操作添加colId到列定义.然后处理网格的onCellClicked操作.您可以使用params.node.data获取行数据.

const [videoName, setVideoName] = useState("");

function onCellClicked(params) {
    // maps to colId: "action" in columnDefs,
    if (params.column.colId === "action") {
      // set videoName for the row
      setVideoName(params.node.data.Video_Name);
      setOpen(true);
    }
}

// grid config
<AgGridReact
  ...
  rowData={response}
  onCellClicked={onCellClicked}>
</AgGridReact>

// access videoName in dialog content
<DialogContent>
 {/* <iframe width="420" height="315" title="videos" src={id} /> */}
 <div>{videoName}</div>
</DialogContent>

Edit reverent-zhukovsky-gt4mln

Output-单击任意行的"播放"按钮.结果是视频url行.您现在可以使用它来播放实际视频.

Output

Javascript相关问答推荐

D3多线图显示1线而不是3线

在这种情况下,如何 for each 元素添加id?

在观察框架中搜索CSV数据

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

当Redux提供程序访问Reduxstore 时,可以安全地从Redux提供程序外部调用钩子?

无法读取未定义错误的属性路径名''

material UI按钮组样式props 不反射

本地库中的chartjs-4.4.2和chartjs-plugin-注解

在数组中查找重叠对象并仅返回那些重叠对象

NG/Express API路由处理程序停止工作

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

第一项杀死下一项,直到数组长度在javascript中等于1

在Odoo中如何以编程方式在POS中添加产品

用于部分字符串的JavaScript数组搜索

在渲染turbo流之后滚动到元素

更改agGRID/Reaction中的单元格格式

通过解构/功能组件接收props-prop验证中缺少错误"

未捕获的不变违规:即使在使用DndProvider之后也应使用拖放上下文

为什么我的Navbar.css没有显示在本地主机页面上?

已在EventListener中更新/更改异步的React.js状态对象,但不会导致组件重新呈现