J'implémente un exemple de https://github.com/moroshko/react-autosuggest
Le code important est comme ceci:
import React, { Component } from 'react';
import suburbs from 'json!../suburbs.json';
function getSuggestions(input, callback) {
const suggestions = suburbs
.filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
.sort((suburbObj1, suburbObj2) =>
suburbObj1.suburb.toLowerCase().indexOf(lowercasedInput) -
suburbObj2.suburb.toLowerCase().indexOf(lowercasedInput)
)
.slice(0, 7)
.map(suburbObj => suburbObj.suburb);
// 'suggestions' will be an array of strings, e.g.:
// ['Mentone', 'Mill Park', 'Mordialloc']
setTimeout(() => callback(null, suggestions), 300);
}
Ce code de copier-coller de l'exemple (qui fonctionne), a une erreur dans mon projet:
Error: Cannot resolve module 'json' in /home/juanda/redux-pruebas/components
Si je retire le préfixe json!:
import suburbs from '../suburbs.json';
De cette façon, je n'ai pas d'erreur au moment de la compilation (l'importation est terminée). Cependant, j'ai des erreurs lorsque je l'exécute:
Uncaught TypeError: _jsonfilesSuburbsJson2.default.filter is not a function
Si je le débogue, je peux voir que la banlieue est un objectc, pas un tableau donc la fonction de filtre n'est pas définie.
Cependant, dans l'exemple, les suggestions sont commentées sont un tableau. Si je réécris des suggestions comme celle-ci, tout fonctionne:
const suggestions = suburbs
var suggestions = [ {
'suburb': 'Abbeyard',
'postcode': '3737'
}, {
'suburb': 'Abbotsford',
'postcode': '3067'
}, {
'suburb': 'Aberfeldie',
'postcode': '3040'
} ].filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
Alors ... quel json! préfixe fait dans l'importation?
Pourquoi est-ce que je ne peux pas le mettre dans mon code? Une configuration babel?