Версия персонального сайта
Если мы не знаем, являются ли данные, которые мы получаем, объектом, и вызываем его со значением объекта, и не делаем никаких выводов, программа сообщит об ошибке.
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> ); }
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.