gpt4 book ai didi

javascript - 如何在 ReactJS 和 AG Grid 中一次播放数组中的一个视频

转载 作者:行者123 更新时间:2023-12-05 00:32:24 31 4
gpt4 key购买 nike

从 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-grid 看起来像这样
enter image description here
我目前正在将所有视频映射到按钮,然后单击按钮它会打开多个视频,但我一次只想要一个视频。
应用程序.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

关于javascript - 如何在 ReactJS 和 AG Grid 中一次播放数组中的一个视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72487878/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com