首页 > 解决方案 > ReactJS 从 Grails 获取 JSON

问题描述

我正在一个应用程序中工作,该应用程序在后端使用 Grails,在前端使用 ReactJS。

在控制器上,我使用 CreateCreteria 获取数据,然后将其映射并保存为 JSON。然后,在前端,我毫无问题地使用 JSON 加载 DataGrid。

Grails 控制器:

class ArtListEstadisticaController {
static responseFormats = ['json', 'xml']

def Ocs = new ClienteServidorService()
def springSecurityService

def index(Integer max) {

    def w_count = VArtLista.createCriteria().count() 

    def results = VArtLista.createCriteria().list() 

    def traeSelectList = []

    results.each {
        def traeMap = [:]

        traeMap.put('id', it.art.trim())
        traeMap.put('art', it.art)
        ...

        traeSelectList.add(traeMap)
    }


    JSONArray data = new JSONArray(traeSelectList);

    response.setHeader 'Access-Control-Expose-Headers', 'Content-Range'
    response.setHeader 'Content-Range', 'bytes : 0-10/' + w_count
    render data as JSON
}

反应

import { List, Datagrid} from 'react-admin';
...
export const ArtEstadisticaDetalleList = withStyles(styles)(({classes, permissions, ...props}) => {

return (
    <div>
        <div style={{margin: '1em'}}>
            <List {...props}
                  title=" " actions={<PostActions/>}
                  bulkActionButtons={false}
                  exporter={false} filters={<MFiltro/>}
                  perPage={25}
            >
                <Datagrid>
                    <TextField source="id"/>
                    <TextField label="Artículo" source="art"/>
                    ...
                </Datagrid>
            </List>
        </div>
    </div>
) });

那工作没问题。但实际上,我需要在 2 个组件中使用相同的 JSON 以在同一页面中显示 DataGrid 和 Graph,但我不知道该怎么做。

像这样的东西:

export const ArtEstadisticaDetalleList = withStyles(styles)(({classes, permissions, ...props}) => {

/// Get JSon Data from the Controller
//  const [paramJson, setparamJson] = useState( ??? );

return (
    <div>
        <ComponentDataGrid paramJson={paramJson}/>
        <br>
        <GraficoBarrasLineaBasica paramJson={paramJson}/>
    </div>
) });

谢谢

标签: jsonreactjsgrailssetstate

解决方案


推荐阅读