在 React Material-table 中添加自定义列
Adding Custom columns in React Material-table
我是 MERN 的新手,如有任何帮助,我们将不胜感激。我正在尝试创建一个股票应用程序。
我已经使用 axios 检索了数据,并使用 Material-Table.
将其显示在 table 中
import React, {useState, useEffect} from 'react'
import MaterialTable from 'material-table'
import axios from "axios";
const DataTable = () => {
const [tableData, setTableData] = useState([]);
const columns = [
{title: 'NAME', field: 'name', width: 200},
{title: 'SYMBOL', field: 'symbol', width: 200},
{title: 'MARKET CAP', field: 'market_cap', width: 200},
{title: 'CURRENT PRICE', field: 'price', width: 200}
]
useEffect(() => {
axios
.get(
"https://api.nomics.com/v1/currencies/ticker?key=xyz&interval=1d,30d&convert=USD&per-page=100"`
)
.then((res) => {
console.log(res);
setTableData(res.data);
})
}, []);
return (
<div>
<div >
<MaterialTable style={{height: 400, width: '70%', left: '14%', top: 100}}
data={tableData}
columns={columns}
title={"Stock Details Table"}
options={{
search: true
}}
/>
</div>
</div>
)
}
export default DataTable
但是现在,我希望能够将我 select 的任何公司的行数据保存到 mongoDb 数据库中,并且应该能够查看我 [=23] 的所有公司=]ed.
我的问题是,如何添加一个单独的列,其中包含每个公司的按钮,使我能够将行数据添加到我的 mongodb 数据库中。我不知道如何将自定义数据与 api.
中的数据一起添加
根据 Material-Table documentation,<MaterialTable>
组件存在 onClick
操作 属性:
onClick: This event will be fired when the button is clicked. Parameters are event
and row
or rows
所以,你需要传递一个函数给onClick
属性。
此函数将获取行详细信息,因此您可以通过另一个 API 调用 post 将其发送到服务器。
const handleSelectedRow = (event, row) => {
// console.log(row) to see the data and choose your require to send with API calling
axios.post("/saveMySelection", row).then(() => {}).catch(() => {}) // don't forget to use then and catch method with proper actions
}
<MaterialTable style={{height: 400, width: '70%', left: '14%', top: 100}}
data={tableData}
columns={columns}
title={"Stock Details Table"}
options={{
search: true
}}
actions={[
{
icon: 'save',
tooltip: 'Save User',
onClick: (event, rowData) => hadnleSelectedRow
}
]}
/>
您还可以查看我之前提到的文档 link 上工作版本的第一个示例。
我是 MERN 的新手,如有任何帮助,我们将不胜感激。我正在尝试创建一个股票应用程序。 我已经使用 axios 检索了数据,并使用 Material-Table.
将其显示在 table 中
import React, {useState, useEffect} from 'react'
import MaterialTable from 'material-table'
import axios from "axios";
const DataTable = () => {
const [tableData, setTableData] = useState([]);
const columns = [
{title: 'NAME', field: 'name', width: 200},
{title: 'SYMBOL', field: 'symbol', width: 200},
{title: 'MARKET CAP', field: 'market_cap', width: 200},
{title: 'CURRENT PRICE', field: 'price', width: 200}
]
useEffect(() => {
axios
.get(
"https://api.nomics.com/v1/currencies/ticker?key=xyz&interval=1d,30d&convert=USD&per-page=100"`
)
.then((res) => {
console.log(res);
setTableData(res.data);
})
}, []);
return (
<div>
<div >
<MaterialTable style={{height: 400, width: '70%', left: '14%', top: 100}}
data={tableData}
columns={columns}
title={"Stock Details Table"}
options={{
search: true
}}
/>
</div>
</div>
)
}
export default DataTable
但是现在,我希望能够将我 select 的任何公司的行数据保存到 mongoDb 数据库中,并且应该能够查看我 [=23] 的所有公司=]ed.
我的问题是,如何添加一个单独的列,其中包含每个公司的按钮,使我能够将行数据添加到我的 mongodb 数据库中。我不知道如何将自定义数据与 api.
中的数据一起添加根据 Material-Table documentation,<MaterialTable>
组件存在 onClick
操作 属性:
onClick: This event will be fired when the button is clicked. Parameters are
event
androw
orrows
所以,你需要传递一个函数给onClick
属性。
此函数将获取行详细信息,因此您可以通过另一个 API 调用 post 将其发送到服务器。
const handleSelectedRow = (event, row) => {
// console.log(row) to see the data and choose your require to send with API calling
axios.post("/saveMySelection", row).then(() => {}).catch(() => {}) // don't forget to use then and catch method with proper actions
}
<MaterialTable style={{height: 400, width: '70%', left: '14%', top: 100}}
data={tableData}
columns={columns}
title={"Stock Details Table"}
options={{
search: true
}}
actions={[
{
icon: 'save',
tooltip: 'Save User',
onClick: (event, rowData) => hadnleSelectedRow
}
]}
/>
您还可以查看我之前提到的文档 link 上工作版本的第一个示例。