如何在 react 中添加 if-else 语句以读取 json-schema?
How to add an if-else statement in react to read json-schema?
我对 js 和反应还很陌生,所以我希望有人能给我一个解决这个问题的想法。我的解决方案很糟糕,但我想不出一个好的解决方案。我也不知道如何在渲染中添加 if-else 语句。有 6 个按钮,每个按钮都是一个 json-schema 的名称(最好是 table 而不是按钮,但我总是在 table 视图中出错) .
我想在用户单击按钮时显示 json-schema,以便用户可以提交 json 文件。
import React, { Component, useState } from 'react';
import { Row, Col } from 'react-bootstrap';
import { withTheme } from '@rjsf/core';
import schema1 from '../schemas/schema1.json';
import schema2 from '../schemas/schema2.json';
import { Datagrid, TextField, EditButton, DeleteButton } from 'react-admin';
class MyApp extends Component {
constructor(props) {
super(props);
this.clickme = this.clickme.bind(this);
}
ToggleGroup() {
const theme = {
blue: {
default: '#3f51b5',
hover: '#283593',
},
pink: {
default: '#000000',
hover: '#ad1457'
}
}
return (<div>
{types.map(type => (
<Col>
<Col>
<Button
active={active === type}
>{type}</Button>
</Col>
</Col>
))}
<Col>
<Form
schema={schema1}
/>
</Col>
</div>
);
}
render() {
return (
<>
<Col>
<Col>
<text>
List of schemas
</text>
</Col>
</Col>
<this.ToggleGroup />
</>
);
}
}
export default MyApp;
您的问题似乎主要与如何构建代码有关。这是您可以通过研究其他人的代码来最好地学习的东西。 github repository 包含很多有用的点点滴滴,可以帮助您解决问题。
为了回答您的问题,我建议您将组件分开。解决方案本身可能对您来说很清楚。也许您可以将您的模式添加到一个对象/地图,然后 select 基于您 ToggleGroup
.
中 select 的 activeType
的模式
例如:
import schema1 from '../schemas/schema1.json';
...
const schemas = new Map([
['schema1', schema1],
['schema2', schema2],
...
]);
// In your Form-Component
const activeSchema = schemas.get('activeType')
我对 js 和反应还很陌生,所以我希望有人能给我一个解决这个问题的想法。我的解决方案很糟糕,但我想不出一个好的解决方案。我也不知道如何在渲染中添加 if-else 语句。有 6 个按钮,每个按钮都是一个 json-schema 的名称(最好是 table 而不是按钮,但我总是在 table 视图中出错) . 我想在用户单击按钮时显示 json-schema,以便用户可以提交 json 文件。
import React, { Component, useState } from 'react';
import { Row, Col } from 'react-bootstrap';
import { withTheme } from '@rjsf/core';
import schema1 from '../schemas/schema1.json';
import schema2 from '../schemas/schema2.json';
import { Datagrid, TextField, EditButton, DeleteButton } from 'react-admin';
class MyApp extends Component {
constructor(props) {
super(props);
this.clickme = this.clickme.bind(this);
}
ToggleGroup() {
const theme = {
blue: {
default: '#3f51b5',
hover: '#283593',
},
pink: {
default: '#000000',
hover: '#ad1457'
}
}
return (<div>
{types.map(type => (
<Col>
<Col>
<Button
active={active === type}
>{type}</Button>
</Col>
</Col>
))}
<Col>
<Form
schema={schema1}
/>
</Col>
</div>
);
}
render() {
return (
<>
<Col>
<Col>
<text>
List of schemas
</text>
</Col>
</Col>
<this.ToggleGroup />
</>
);
}
}
export default MyApp;
您的问题似乎主要与如何构建代码有关。这是您可以通过研究其他人的代码来最好地学习的东西。 github repository 包含很多有用的点点滴滴,可以帮助您解决问题。
为了回答您的问题,我建议您将组件分开。解决方案本身可能对您来说很清楚。也许您可以将您的模式添加到一个对象/地图,然后 select 基于您 ToggleGroup
.
activeType
的模式
例如:
import schema1 from '../schemas/schema1.json';
...
const schemas = new Map([
['schema1', schema1],
['schema2', schema2],
...
]);
// In your Form-Component
const activeSchema = schemas.get('activeType')