Видео введение
Версия персонального сайта
Если мы не знаем, являются ли данные, которые мы получаем, объектом, и вызываем его со значением объекта, и не делаем никаких выводов, программа сообщит об ошибке.
let food = null; console.info(food.name); // error : Cannot read properties of null (reading 'name')
Поэтому, чтобы определить, имеет ли объект нужный нам ключ, можно использовать следующие методы.
let food = { name: "apple" }; if (food != null) { console.info(food.name); // output : apple } // or if (food) { console.info(food.name); // output : apple }
Или использовать опциональную цепочку, чтобы проверить, есть ли у объекта ключ, который мы хотим получить.
let food = { name: "apple" }; if (food?.name) { console.info(food.name); // output : apple } //不會進到這個if 因為food物件內並沒有名為color的key if (food?.color) { console.info(food.color); }
Необязательная цепочка выполняется путем добавления к имени объекта символа ? name используется для проверки, есть ли у объекта food ключ с таким именем.
Если в объекте сегодня есть другие функции, вы можете использовать необязательную цепочку для проверки существования функции, а затем запустить ее, если она существует.
let food = { name: "apple", color: "red", getFoodData: () => { console.info("getFoodData..."); // output : getFoodData... }, }; food?.getFoodData?.();
Теперь используйте API fetch для выборки постов, предоставленных jsonplaceholder, и установите ограничение на 5, чтобы за одну выборку мы получали только 5 постов.
function App() { const [posts, setPosts] = useState(null); useEffect(() => { const getPostData = async () => { const response = await fetch( "https://jsonplaceholder.typicode.com/posts?_limit=5" ); const data = await response.json(); setPosts(data); }; getPostData(); }, []); console.info(posts); // output : (5) [{…}, {…}, {…}, {…}, {…}] return ( <div className = "App"> {posts.map((post) => ( <p>{post.title}</p> ))} </div> ); }
Это происходит потому, что состояние posts инициализируется в null, а состояние null не поддерживает функцию map, отсюда и сообщение об ошибке.
Мы можем добавить в программу суждение, чтобы определить, являются ли посты нулевыми, и вернуть загрузочный текст, если это так.
function App() { const [posts, setPosts] = useState(null); useEffect(() => { const getPostData = async () => { const response = await fetch( "https://jsonplaceholder.typicode.com/posts?_limit=5" ); const data = await response.json(); setPosts(data); }; getPostData(); }, []); console.info(posts); if (posts == null) { return <h1>Loading...</h1>; } return ( <div className = "App"> {posts.map((post) => ( <p>{post.title}</p> ))} </div> ); }
Или мы можем добавить необязательную ссылку непосредственно после постов, чтобы не писать избыточный код суждения.
function App() { const [posts, setPosts] = useState(null); useEffect(() => { const getPostData = async () => { const response = await fetch( "https://jsonplaceholder.typicode.com/posts?_limit=5" ); const data = await response.json(); setPosts(data); }; getPostData(); }, []); console.info(posts); // output : (5) [{…}, {…}, {…}, {…}, {…}] return ( <div className = "App"> {posts?.map((post) => ( <p>{post.title}</p> ))} </div> ); }
19.03.2023 13:43
Установщик веб-платформы, предлагаемый компанией Microsoft, перестанет работать 31 декабря 2022 года. Его закрытие привело к тому, что мы не можем запускать наши php-файлы через localhost на наших компьютерах. Мне с трудом удалось установить его и я решил поделиться этой статьей, чтобы помочь тем,...
19.03.2023 13:03
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после поставщика контекста. Это позволит избежать ненужных повторных рендеров.
19.03.2023 11:50
Лично я попрощался с операторами print() в python. Без шуток.
19.03.2023 06:15
Я пишу эту статью, чтобы поделиться тем, как настроить макет Metronic с помощью Sass, поскольку Metronic предоставляет так много документации, и они постоянно обновляют версию (а нам нужно быстро наверстать упущенное!).
18.03.2023 11:32
Здравствуйте дорогие читатели, я Ферди Сефа Дюзгюн, сегодня мы продолжим с вами уроки css. Сегодня мы снова продолжим с так называемых классов.
18.03.2023 11:16
CSS, или "Каскадные таблицы стилей", - это язык стилей, используемый в веб-страницах. CSS является одним из основных инструментов веб-разработки наряду с HTML и JavaScript.