reactjs - 在 Drawer 组件内编辑组件
问题描述
我正在使用react-admin
框架,并且试图将<Edit>
组件放入<Drawer>
组件中。我需要这个才能保存在我的JsonInput
.
这是我的自定义组件:
import React, { Component, Fragment } from 'react';
import { fetchUtils, CardActions, EditButton, Button, List, Datagrid, Edit } from 'react-admin';
import Drawer from '@material-ui/core/Drawer';
import JsonInput from 'react-json-view';
import EditIcon from '@material-ui/icons/Edit';
import IconKeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';
import { SimpleForm } from 'ra-ui-materialui/lib/form';
const divStyle = {
width: '400px',
margin: '1em'
};
export default class JsonEditButton extends React.Component {
constructor(props, context) {
super(props, context);
this.state = { showPanel: false };
}
handleClick = () => {
this.setState({ showPanel: true });
};
handleCloseClick = () => {
this.setState({ showPanel: false });
};
onChange = (value) => {
const { updated_src, name, namespace, new_value, existing_value } = value;
//this.onChange(updated_src);
}
render() {
const { showPanel } = this.state;
return (
<div>
<Button label="Upravit JSON" onClick={this.handleClick}>
<EditIcon />
</Button>
<Fragment>
<Drawer
anchor="right"
open={showPanel}
onClose={this.handleCloseClick}
>
<div>
<Button label="Zavřít" onClick={this.handleCloseClick}>
<IconKeyboardArrowRight />
</Button>
</div>
<div style={divStyle}>
{props => (
<Edit {...props}>
<SimpleForm>
{this.props.record && <JsonInput src={this.props.record} name={null} displayDataTypes={false} displayObjectSize={false} onEdit={this.onChange} onAdd={this.onChange} onDelete={this.onChange} />}
</SimpleForm>
</Edit>
)}
</div>
</Drawer>
</Fragment>
</div>
);
}
};
但是,这不会返回任何HTML
.
知道如何解决这个问题吗?
先感谢您。
解决方案
也许这可能会有所帮助
<div style={divStyle}>
<Edit {...this.props}>
<SimpleForm>
{this.props.record && <JsonInput src={this.props.record} name={null} displayDataTypes={false} displayObjectSize={false} onEdit={this.onChange} onAdd={this.onChange} onDelete={this.onChange} />}
</SimpleForm>
</Edit>
</div>
前面的代码{props => ()}
实际上是一个函数,或者你可以试试这个
<div style={divStyle}>
{props => (
return(
<Edit {...props}>
<SimpleForm>
{this.props.record && <JsonInput src={this.props.record} name={null} displayDataTypes={false} displayObjectSize={false} onEdit={this.onChange} onAdd={this.onChange} onDelete={this.onChange} />}
</SimpleForm>
</Edit>)
)}
</div>
推荐阅读
- kerberos - Java 11:使用 GSS API 的 Kerberos
- xcode10.2 - Xcode 10.2.1 xcode 模拟器不工作
- java - 自 jGit 中的某些提交以来,如何获取所有更改的文件?
- xml - xml文件存储在哪里?
- java - 如何在隐身模式下执行 URLConnection 请求
- c# - 动态 ViewModel 的绑定值在 WPF 中变为空
- java - 从父级获取静态上下文中的测试类名称
- c# - 如何将文本框参数传递到 sql 适配器语句中?
- oracle - MS Access:在设计指南视图中创建链接表不显示要链接到的表?
- angular - 如何从对象中获取键值?