2017-01-22 8 views
0

Я столкнулся с проблемой, что мне нужно передать мою схему и мой json в свой конструктор. Прежде всего, я использую Reactabular для разработки SPA, но в этой библиотеке я могу запустить приложение только с помощью функции, которую они создали, с именем generateRows, , но у меня есть свои собственные объекты для ввода, поэтому я не хочу для генерации строк.Перейдите к this.state мои строки и их json-схема

В моем компоненте я есть этот кусок кода:

class AllFeaturesTable extends React.Component { 
    constructor(props) { 
    super(props); 

    this.state = { 
     rows: generateRows(5, schema), 
     searchColumn: 'all', 
     query: {}, // search query 
     sortingColumns: null, 
     columns: this.getColumns(), 
     pagination: { 
     page: 1, 
     perPage: 5 
     } 
    }; 

Когда я передать мои строки в JSON объект массива все прекрасно работает до тех пор пока я пытаюсь изменить эти значения, и имеет смысл, почему я не могу изменить это данные. Я не могу, потому что я не передал схему (как вы, ребята, можете видеть в генераторах, которые они использовали в качестве параметра для схемы).

Вопрос в том, как я могу это достичь? пройдите в моем this.state.row схему и мои строки.

Это мои строки:

const predefinedRows = [ 
    { "combustivel" : "Flex", 
    "imagem" : null, 
    "marca" : "Volkswagem", 
    "modelo" : "Gol", 
    "placa" : "FFF-5498", 
    "valor" : 20000 
    }, 
    { "combustivel" : "Gasolina", 
    "imagem" : null, 
    "marca" : "Volkswagem", 
    "modelo" : "Fox", 
    "placa" : "FOX-4125", 
    "valor" : "20000" 
    }, 
    { "combustivel" : "Alcool", 
    "imagem" : "http://carros.ig.com.br/fotos/2010/290_193/Fusca2_290_193.jpg", 
    "marca" : "Volkswagen", 
    "modelo" : "Fusca", 
    "placa" : "PAI-4121", 
    "valor" : "20000" 
    } 

]; 

и это моя схема:

const schema = { 
    type: 'object', 
    properties: { 
    combustivel: { 
     type: 'string' 
    }, 
    imagem: { 
     type: 'string' 
    }, 
    marca: { 
     type: 'string' 
    }, 
    modelo: { 
     type: 'string' 
    }, 
    placa: { 
     type: 'string' 
    }, 
    valor: { 
     type: 'integer' 
    } 
    }, 
    required: ['combustivel', 'imagem', 'marca', 'modelo', 'placa'] 
}; 

Заранее спасибо!

ответ

1

Нельзя использовать generateRows. generateRows введено here, просто верните данные фиктивного массива.

Просто выполните команду example, чтобы реализовать свой компонент. Если вы хотите использовать все функции и перейдите к this.state.row схеме и строкам. Просто сделайте это:

this.state = { 
     row: { 
     rows: yourRows, 
     schema: yourSchema 
     }, 
     searchColumn: 'all', 
     query: {}, // search query 
     sortingColumns: null, 
     columns: this.getColumns(), 
     pagination: { 
     page: 1, 
     perPage: 5 
     } 
    }; 
+0

Я ценю за вашу помощь, но он не работает. –

+0

Не могли бы вы исправить свой исходный код? –

+1

Btw, схема может быть пропущена полностью, поскольку это то, что использует код демо-генератора. Reactabular не делает ничего особенного с этим. Так что достаточно иметь только «rows: yourRows' в состоянии. –