我們先看一下題目要求: Given a string s containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[‘ and ‘]’, determine if the input string is valid. 簡單來說,題目會輸入一個包含這三種符號的字串,字串是透過字元指標(Char Point)傳入,我們需要驗證字串的括號是否成對。就是一般在IDE中Coding打錯括號也會跑出錯誤訊息的括號檢驗。
題目規則
大致上分為以下幾種驗證標準: Example1: Input: s = "([{}]) Output: true
對於React來說,每當重新渲染時,所有的組件都會是全新的組件,不一樣的組件。什麼意思? 當我們實際執行React專案時,在我們重新載入的那一剎那,所有的組件都是新的組件,不同於先前所渲染的組件。換句話說,以我們fetchHandler來說,即便執行的名稱與內容都完全相同,React也會視這兩個fetchHandler為不一樣的函數,這一切都是源自於JS物件Call by Reference的本質而延伸出來。
在index中,我們匯入BrowserRouter這個組件,緊接著將App組件包覆在其中,如此一來,Route就可以正式發動! 現在我們實際執行npm run start後,分別在URL/(Slash)後方加上welcome或者是travel就可以切換到對應的組件。不過我們這裡會有一個相當大的問題,那就是在切換URL的時候,網站都會重新載入,這是一個大問題! 因為這樣就不能稱作SPA跑車!
import { Route, Switch, Redirect } from "react-router-dom";
import Welcome from './components/Welcome'; import Travel from './components/Travel'; import Country from './components/Country'; import NavHeader from './components/NavHeader';
同樣地,我們一樣先來看看官方的文件敘述: useRef returns a mutable ref object whose .current property is initialized to the passed argument (initialValue). The returned object will persist for the full lifetime of the component. 從Ref這個英文縮寫來看,可以簡單猜測出這個Hook可以用來參照某樣東西。上述官方解釋useRef會回傳一個傳入參數後初始化current屬性的變動參照物件,這個物件將持續在整個組件的生命期。換句話說,useRef會去對應到DOM的節點,只要節點一變動就會跟著變動。useRef特別的地方在於它所擁有的屬性current是可變動的值,但current變動並不會造成React重新渲染組件。
為什麼我會說useReducer是useState的強化版? 我們來看一段官方文件所述的話: useReducer is usually preferable to useState when you have complex state logic that involves multiple sub-values or when the next state depends on the previous one. 大致上的意思是說當我們有複雜的狀態邏輯或者是狀態依賴先前的狀態時,我們就可以考慮使用useReducer,這句話聽起來就像是useState的強化版。我們一般處理狀態時會為各自的狀態寫一個useState: