react-admin:在 <Datagrid> 内处理自定义字段中的点击事件
react-admin: Handle click event in Custom Field within a <Datagrid>
在我们的 react-admin 应用程序中,首先我们显示一个产品列表。
在每一行我们还显示一个文本字段(允许用户输入份数)和一个 'Print' 按钮。
片段如下:
export const ProductList = props => (
<List filters={<ProductFilter />} exporter={false} {...props} >
<Datagrid rowClick="edit" >
<TextField source="id" />
<TextField source="productName" />
<PrintPanel label="Print" />
</Datagrid>
</List>
);
自定义字段 PrintPanel
如下:
import TextField from '@material-ui/core/TextField';
import Button from '@material-ui/core/Button';
class PrintPanel extends React.Component {
state = {
copies: 1,
}
render() {
return (
<span>
<TextField label="Number of copies"/>
<Button variant="contained" color="primary"
onClick={() => alert(1)} // PROBLEM: this is NOT called when user click the button
>
Print
</Button>
</span>
);
}
}
问题是:当用户点击 'Print' 按钮时,react-admin 打开了 'Edit' 页面而不调用 Button 的 onclick。
我的问题是:如何解决这个问题?
试试这个:onClick={ (e) => { e.stopPropagation(); alert(1) } }
如果还是不行,更新react-admin版本,这个错误已经修复了。
在我们的 react-admin 应用程序中,首先我们显示一个产品列表。
在每一行我们还显示一个文本字段(允许用户输入份数)和一个 'Print' 按钮。
片段如下:
export const ProductList = props => (
<List filters={<ProductFilter />} exporter={false} {...props} >
<Datagrid rowClick="edit" >
<TextField source="id" />
<TextField source="productName" />
<PrintPanel label="Print" />
</Datagrid>
</List>
);
自定义字段 PrintPanel
如下:
import TextField from '@material-ui/core/TextField';
import Button from '@material-ui/core/Button';
class PrintPanel extends React.Component {
state = {
copies: 1,
}
render() {
return (
<span>
<TextField label="Number of copies"/>
<Button variant="contained" color="primary"
onClick={() => alert(1)} // PROBLEM: this is NOT called when user click the button
>
Print
</Button>
</span>
);
}
}
问题是:当用户点击 'Print' 按钮时,react-admin 打开了 'Edit' 页面而不调用 Button 的 onclick。
我的问题是:如何解决这个问题?
试试这个:onClick={ (e) => { e.stopPropagation(); alert(1) } }
如果还是不行,更新react-admin版本,这个错误已经修复了。