Tôi đang triển khai một ví dụ từ https://github.com/moroshko/react-autosuggest
Mã quan trọng như sau:
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);
}
Mã sao chép-dán này từ ví dụ (hoạt động), có lỗi trong dự án của tôi:
Error: Cannot resolve module 'json' in /home/juanda/redux-pruebas/components
Nếu tôi lấy ra tiền tố json !:
import suburbs from '../suburbs.json';
Bằng cách này, tôi không gặp lỗi tại thời điểm biên dịch (nhập xong). Tuy nhiên, tôi gặp lỗi khi thực thi nó:
Uncaught TypeError: _jsonfilesSuburbsJson2.default.filter is not a function
Nếu tôi gỡ lỗi nó, tôi có thể thấy vùng ngoại ô là một objectc, không phải là một mảng nên chức năng lọc không được xác định.
Tuy nhiên trong ví dụ được nhận xét gợi ý là một mảng. Nếu tôi viết lại các đề xuất như thế này, mọi thứ đều hoạt động:
const suggestions = suburbs
var suggestions = [ {
'suburb': 'Abbeyard',
'postcode': '3737'
}, {
'suburb': 'Abbotsford',
'postcode': '3067'
}, {
'suburb': 'Aberfeldie',
'postcode': '3040'
} ].filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
Vậy ... json! tiền tố đang làm gì trong quá trình nhập?
Tại sao tôi không thể đưa nó vào mã của mình? Một số cấu hình babel?