params
, кроме специального исключения для *
.slug
вам не очень нужен, то можно сделать так:{
path: '/product/*',
name: 'Product',
params: true,
component: () => import(/* webpackChunkName: "Category" */ '../views/ProductCard')
},
<router-link :to="{name:'Product', params: {pathMatch: item.url}}</router-link>
v-bind:
это то же самое что :
. А key
должен стоять на каждом итерируемом элементе. Уникальный для каждого элемента. Это очевидно, если понимать нахрена он вообще нужен(для обновления только тех кусков, что действительно обновились и сохранения тех, что не изменились).key
тебе нужен ещё и на label
. useEffect
сам по себе только запускается уже после рендера. const [todos, setTodos] = useState([]);
. {todos ? <TodoList todos={todos}/> : <LoadingComponent/>}
Сначала покажет какой-нить спиннер, потом подгруженный список. Promise.reslove(data)
и Promise.reject(error)
, а во-вторых: при возврате из then
\catch
даже они не нужны. interface ResponseData {
status: boolean;
data?: object;
}
function sendQuery(url: string, data: object): Promise<ResponseData> {
return fetch(url, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify(data)
}).then(response =>
response.json()
).then(data => ({
status: true,
data: data
})).catch(() => {
throw {
status: false
}
});
}
new Promise
, а потому выдаёт Promise<unknown>
. Т.е. каждый раз, когда вы используете new Promise
- надо использовать его с дженериком: new Promise<Type>
. require
не "берёт картинки из папки", require
обрабатывает картинки loader'om
и выдаёт в ответ результат. Статический результат, который попадает в бандл. require(`./img/${name}.png`);
- не значит "взять картинку по имени name
из папки img
во время исполнения", это значит "во время компиляции взять все картинки с маской './img/*.png',
обработать loader'ом
, получить для каждой статическую ссылку, и положить в бандл". loader'ы
по умолчанию превращают маленькие картинки в data:uri
строки, а большие перекладывают в папочку imgs
и переименовывают с хэшем, возвращая путь. Но это по-умолчанию, а так они способны много всякой магии творить.public
копируются в результирующую папку как есть и доступны по /name.png
без require
, просто через обычный html
и css
. computed
не будет пересчитаться при обновлении ref'ов или dom-значений. Он работает с реактивными данными.computed
и поместите в mounted
, вручную присваивая значения переменной в data
. Не забудьте добавить значения по умолчанию, а также обновлять их при необходимости(по событию resize или ещё какому, способныму повлиять на эти размеры)./catalog/:slug/:option?
./catalog/:slug/(.*)?
и ловить любые пути.