[英]React-Admin: How can I access a value without `source`?
我正在嘗試在react-admin
創建一個動態按鈕。
對於每個按鈕,它都會點擊一個唯一的地址,我該怎么做?
不幸的是,我有這個錯誤: props.username is undefined
。
export const LoginCredentialList = (props) => (
<List {...props} pagination={<PostPagination/>}>
<Datagrid>
<TextField label="Username" source="username" />
<Button label="Re-invoke Login"
onClick={() => {
axios.get("http://localhost:8080/admin/" + somehow_read_username_here)
.then((res)=>console.log(res));
}}
/>
</Datagrid>
</List>
);
這是調用或使用上述組件的parent
:
class SPanel extends React.Component {
render() {
return (
<div>
<Admin dataProvider={restDataProvider}>
<Resource name="loginCredential" list={LoginCredentialList} />
...
我之前沒有與react-admin
過,但是在快速瀏覽其文檔之后,我不明白的是
LoginCredentialList
組件中收到的props
具有記錄列表Datagrid
遍歷此列表並將單個record
傳遞給子Field
組件Field
組件接收record
作為react-admin
注入的 prop 盡管react-admin
提供了許多標准的Field
組件,但它沒有ButtonField
。
因此,您可以編寫自己的Field
組件。 ( https://marmelab.com/react-admin/Fields.html#writing-your-own-field-component )
就像是:
const ButtonField = ({source, record}) => (
<Button label="Re-invoke Login" onClick={()=>{
axios
.get("http://localhost:8080/admin/"+record[source])
.then((res)=>console.log(res));
}}/>
);
然后將其用作您的主要組件
export const LoginCredentialList = (props) => (
<List {...props} pagination={<PostPagination/>}>
<Datagrid>
<TextField label="Username" source="username" />
<ButtonField source="username" />
</Datagrid>
</List>
);
試試這個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.