react-edit-doubleclick

#React,雙擊編輯文本 如何在React中雙擊元素時編輯頁面的某部分 我需要監聽元素的雙擊事件並使該元素可編輯。 一種方法是使用toggle狀態變量,當元素被雙擊時顯示不同的元素: const [toggle, setToggle] = useState(true) const [name, setName] = useState('test') ... toggle ? ( <p onDoubleClick={() => { setToggle(false) }} >{name}</p> ) : ( <input type='text' value={project.status} /> )} 然後,我們將一些屬性添加到input元素。首先,我們將name狀態分配給value屬性。 然後,我們使用onChange()事件監聽器來在input字段的內容發生變化時設置name變量的值。 最後,我們使用onKeyDown()來攔截Enter或Escape按鍵事件,並返回顯示p元素: <input type="text" value={name} onChange={(event) => { setName(name) }} onKeyDown={(event) => { if (event.key === 'Enter' || event.key === 'Escape') { setToggle(true) event.preventDefault() event.stopPropagation() } }} /> 你也可以在該函數中添加任何副作用,例如在需要時將值保存到其他位置。

React,在元素新增至 DOM 時將焦點設定至項目

如何在 React 中在元素新增至 DOM 時設定焦點? 我有一個包含簡單表單的模態對話框,其中只有一個 input 欄位,我希望當模態對話框由 React 添加到 DOM 時,該元素能夠自動獲得焦點。 我開始思考許多不同的方式來實現這樣的效果,或許使用 useEffect() 來在組件添加到 DOM 時觸發事件,或者使用 ref 屬性來創建對 DOM 元素的引用並調用其 focus() 方法。不過後來我意識到我想得太複雜了,只需要在元素上使用 HTML 的 autofocus 屬性就可以解決這個問題。 果然如此。請記住,在 JSX 中它是 autoFocus,F 是大寫的: <input autoFocus ...// 其他輸入欄位的屬性

React,如何修復TypeError: resolver is not a function錯誤

我在處理一個Next.js/React應用程式時遇到了這個相當困惑的錯誤訊息: TypeError: resolver is not a function 結果解決方法非常簡單。 我正在進行一些編輯,並且將我正在編輯的API呼叫的預設匯出的組件註釋掉了: export default <name> 所以,請確保你有一個預設匯出,錯誤就會消失。

React,如何動態選擇要渲染的組件

我有一個需求,需要在菜單中渲染一個項目列表,每個項目都有自己的圖標。 起初,我在菜單中硬編碼組件,像這樣: const menu = [ { title: '首頁', icon: <HomeIcon className="mr-3 ml-1 h-5 w-5" /> }, { title: '通知', icon: <BellIcon className="mr-3 ml-1 h-5 w-5" /> }, { title: '個人資料', icon: <UserIcon className="mr-3 ml-1 h-5 w-5" /> }, ]; 使用非常酷的 @heroicons/react 套件。 在 JSX 中,我使用 menu 陣列迭代顯示 {item.icon}。 但是,後來我需要根據應用程序的響應狀態更改使用的 Tailwind 類,所以我使用了 react-responsive 套件。 我決定改為傳遞一個字符串,因此首先做了這個更改: const menu = [ { title: '首頁', icon: 'HomeIcon' }, { title: '通知', icon: 'BellIcon' }, { title: '個人資料', icon: 'UserIcon' }, ]; const Icon = (props) => { const { name } = props; let icon = null; if (name === 'HomeIcon') icon = HomeIcon; if (name === 'BellIcon') icon = BellIcon; if (name === 'UserIcon') icon = UserIcon; return React....

React,如何將props傳遞給子組件

如何在React中將從父組件獲得的所有props傳遞給子組件 假設您有一個組件層次結構,在其中您從頂級組件將props傳遞給下一級組件,並且您需要將這些props原封不動地傳遞給子組件。這種情況經常發生,您真的不想這樣做: const IntermediateComponent = (props) => { return ( <ChildComponent prop1={props.prop1} prop2={props.prop2} /> ) } 相反,您想要傳遞所有的props,無論其名稱如何。 您可以使用展開運算符來實現: const IntermediateComponent = (props) => { return ( <ChildComponent {...props} /> ) } 這種語法更容易閱讀,更少出錯,並且具有靈活性,因為在更改props時您無需更改中介組件中的props名稱或添加props。

React: 展示型组件與容器型组件

在React中,組件通常被分為兩大類:展示型組件和容器型組件。 每個組件都具有其獨特的特性。 展示型組件主要關注生成要輸出的標記。 它們不管理任何類型的狀態,除非與展示相關的狀態。 容器型組件主要關注“後端”操作。 它們可能處理各種子組件的狀態。 它們可能包裝幾個展示型組件。 它們可能與Redux進行交互。 為了簡化區分,我們可以說展示型組件關注外觀,容器型組件關注使事情運作。 例如,這是一個展示型組件。它從其props中獲取數據,並僅關注顯示元素: const Users = props => ( <ul> {props.users.map(user => ( <li>{user}</li> ))} </ul> ) 另一方面,這是一個容器型組件。它管理並存儲自己的數據,並使用展示型組件來顯示它: class UsersContainer extends React.Component { constructor() { this.state = { users: [] } } componentDidMount() { axios.get('/users').then(users => this.setState({ users: users })) ) } render() { return <Users users={this.state.users} /> } }

React:如何在點擊時顯示不同的組件

通過告訴 React 在點擊某個元素時顯示另一個組件,來切換組件的可見性。 在許多場景中,當點擊按鈕或鏈接時,您希望在屏幕內顯示完全不同的組件。 以導航結構為例,該如何實現呢? 在這個例子中,我們將狀態集中管理在 App 組件中。 import React, { useState } from 'react'; const AddTripButton = (props) => { return <button onClick={props.addTrip}>Add a trip</button>; }; export default AddTripButton; 然後,在 App 組件中,通過將 addTrip 事件指定為 triggerAddTripState 方法來處理添加旅行的事件: <AddTripButton addTrip={this.triggerAddTripState} /> 使用 React hooks,首先導入 useState: import React, { useState } from 'react'; 然後聲明一個 “state” 變量: const [state, setState] = useState('start'); 在 JSX 中,根據此狀態值顯示和隱藏不同的組件: function App() { const [state, setState] = useState('start'); return ( <div> {state === 'start' && <AddTripButton addTrip={() => setState('add-trip')} />} {state === 'add-trip' && <AnotherComponent />} </div> ); }

React:如何製作響應式的 JSX

我需要在 React 中,讓側邊欄在大螢幕上呈現一種樣式,而在較小螢幕上呈現另一種樣式,所以我希望能夠在 JSX 中偵測到響應式佈局的變化。 就像這樣: 您可以使用 react-responsive 套件來實現這一點。 npm install react-responsive 然後您可以引入 useMediaQuery 鉤子: import { useMediaQuery } from 'react-responsive' 在您的組件中,您可以像這樣使用它: const isBigScreen = useMediaQuery({ query: '(min-device-width: 1224px)' }) const isSmallScreen = useMediaQuery({ query: '(max-width: 1224px)' }) 這是我在組件主頁上找到的一個簡單的斷點示例,對於我的需求來說效果很好。 我在一個佈局組件中以以下方式使用它: import { useMediaQuery } from 'react-responsive' export default function Layout({ children }) { const isBigScreen = useMediaQuery({ query: '(min-device-width: 1224px)' }) const isSmallScreen = useMediaQuery({ query: '(max-width: 1224px)' }) return ( <div> {isSmallScreen ?...

React入門

React視圖庫介紹 什麼是React? React是一個旨在簡化視覺界面開發的JavaScript庫。 它是在Facebook開發並於2013年釋出的,是一些最廣泛使用的應用程序的引擎,為Facebook和Instagram等眾多應用程序提供動力。 它的主要目標是通過將UI分成一系列組件,使得在任何時間點都可以輕松理解界面及其狀態。 React為什麼如此受歡迎? React在前端Web開發領域引起了轟動。為什麼? 比其他替代方案更簡單 在React宣布時,Ember.js和Angular 1.x是主要的框架選擇。這兩個框架對代碼施加了許多約定,因此不方便移植現有應用程序。React選擇非常容易集成到現有項目中,因為這是Facebook在將其引入現有代碼庫時所必須做的。此外,這兩個框架提供了太多內容,而React只選擇實現了View層而不是完整的MVC堆棧。 完美的時機 當時,Google宣布了Angular 2.x,隨之而來的是不向後兼容的重大更改。從Angular 1轉到Angular 2就像轉到不同的框架,因此這個因素,再加上React承諾的執行速度改進,使得開發人員渴望嘗試它。 得到Facebook的支持 如果React成為成功的項目,得到Facebook的支持顯然是一個好處。 Facebook目前對React非常感興趣,認為它的開源價值,對於所有在自己項目中使用React的開發人員來說,這是一個巨大的加分點。 React學習起來簡單嗎? 雖然我說React比替代框架更簡單,但深入研究React仍然很複雜,主要是因為可以與React集成的相關技術,如Redux和GraphQL。 React本身具有非常小的API,你只需要理解4個概念就可以入門: 組件 JSX 狀態 屬性

React元件

React元件簡介 元件是介面中的一個獨立單元。例如,在典型的部落格首頁中,可以找到側邊欄元件和部落格文章清單元件。它們本身由其他元件組成,因此您可以擁有一個部落格文章元件的清單,每個部落格文章都有自己的特殊屬性。 React讓這個過程非常簡單:所有東西都是元件。 甚至普通的HTML標籤本身都是一個元件,並且它們是默認添加的。 下面的兩行程式碼是等價的,它們做的是相同的事情。一個使用JSX,一個不使用,將<h1>Hello World!</h1>嵌入到ID為app的元素中。 import React from 'react' import ReactDOM from 'react-dom' ReactDOM.render(<h1>Hello World!</h1>, document.getElementById('app')) ReactDOM.render( React.createElement('h1', null, 'Hello World!'), document.getElementById('app') ) 可以看到,React.createElement提供了一個API來創建h1元件。改變該方法的第一個參數可以創建不同的標籤。第二個參數是屬性(prop)的物件,在這種情況下,我們不需要任何屬性,所以我們傳遞null。 這是我們如何使用React與內建的HTML元件一起工作,但您很快就會不再滿足它們。React擅長的是讓我們通過組合自定義元件來構建使用者介面。 自定義元件 在React中,有兩種定義元件的方法。 一種是函數元件: const BlogPostExcerpt = () => { return ( <div> <h1>標題</h1> <p>描述</p> </div> ) } 另一種是類別元件: import React, { Component } from 'react' class BlogPostExcerpt extends Component { render() { return ( <div> <h1>標題</h1> <p>描述</p> </div> ) } } 直到最近,類別元件是定義具有自己狀態並且可以存取生命週期方法的元件的唯一方式。 React Hooks改變了這一點,所以現在我們的函數元件比以往更強大,我相信我們在未來會看到越來越少的類別元件,儘管以這種方式創建元件仍然是完全有效的方式。...