Переменная extern
- это объявление (благодаря sbi для коррекции) переменной, которая определена в другой единицы перевода. Это означает, что хранилище для переменной выделено в другом файле.
Скажем, у вас есть два файла .c
test1.c
и test2.c
. Если вы определяете глобальную переменную int test1_var;
в test1.c
и хотите получить доступ к этой переменной в test2.c
, вы должны использовать extern int test1_var;
в test2.c
.
Полный образец:
$ cat test1.c
int test1_var = 5;
$ cat test2.c
#include <stdio.h>
extern int test1_var;
int main(void) {
printf("test1_var = %d\n", test1_var);
return 0;
}
$ gcc test1.c test2.c -o test
$ ./test
test1_var = 5
Вы находитесь в метке-переключателе, поэтому отображается первое совпадение. Первое совпадение для <Route path="/meals" component={ListRecipes} />
, поэтому оно будет отображено. Попытайтесь добавить параметр точно к этому маршруту route doc
Вам необходимо будет использовать withRouter
HOC с ItemRecipe, поскольку он не получает реквизиты маршрутизатора
const ItemRecipe = ({ recipe }) => {
const { label, image } = recipe.recipe;
return (
<li>
<p> {label} </p>
<img src={image} alt="food" />
<Link to={`/meals/${label}`} >
<p>More information</p>
</Link >
</li>
);
}
export default withRouter(ItemRecipe);
Также вам следует кодировать параметры URL-адреса перед использованием с помощью ссылки со ссылкой enocdeURIComponent
и декодировать это в DetailsRecipe
с использованием decodeURIComponent
<Link to={`/meals/${encodeURIComponenent(label)}`} >