Skip to content

Commit b89f574

Browse files
merging all conflicts
2 parents 75344aa + 27d86ff commit b89f574

File tree

3 files changed

+1048
-656
lines changed

3 files changed

+1048
-656
lines changed

src/components/Layout/HomeContent.js

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -797,9 +797,7 @@ function CommunityGallery() {
797797
}, []);
798798

799799
return (
800-
<div
801-
ref={ref}
802-
className="relative flex overflow-x-hidden overflow-y-visible w-auto">
800+
<div ref={ref} className="relative flex overflow-x-clip w-auto">
803801
<div
804802
className="w-full py-12 lg:py-20 whitespace-nowrap flex flex-row animate-marquee lg:animate-large-marquee"
805803
style={{
@@ -826,21 +824,26 @@ const CommunityImages = memo(function CommunityImages({isLazy}) {
826824
<div
827825
key={i}
828826
className={cn(
829-
`group flex justify-center px-5 min-w-[50%] lg:min-w-[25%] rounded-2xl relative`
827+
`group flex justify-center px-5 min-w-[50%] lg:min-w-[25%] rounded-2xl`
830828
)}>
831829
<div
832830
className={cn(
833-
'h-auto relative rounded-2xl overflow-hidden before:-skew-x-12 before:absolute before:inset-0 before:-translate-x-full group-hover:before:animate-[shimmer_1s_forwards] before:bg-gradient-to-r before:from-transparent before:via-white/10 before:to-transparent transition-all ease-in-out duration-300',
831+
'h-auto rounded-2xl before:rounded-2xl before:absolute before:pointer-events-none before:inset-0 before:transition-opacity before:-z-1 before:shadow-lg lg:before:shadow-2xl before:opacity-0 before:group-hover:opacity-100 transition-transform ease-in-out duration-300',
834832
i % 2 === 0
835-
? 'rotate-2 group-hover:rotate-[-1deg] group-hover:scale-110 group-hover:shadow-lg lg:group-hover:shadow-2xl'
836-
: 'group-hover:rotate-1 group-hover:scale-110 group-hover:shadow-lg lg:group-hover:shadow-2xl rotate-[-2deg]'
833+
? 'rotate-2 group-hover:rotate-[-1deg] group-hover:scale-110'
834+
: 'group-hover:rotate-1 group-hover:scale-110 rotate-[-2deg]'
837835
)}>
838-
<img
839-
loading={isLazy ? 'lazy' : 'eager'}
840-
src={src}
841-
alt={alt}
842-
className="aspect-[4/3] h-full w-full flex object-cover rounded-2xl bg-gray-10 dark:bg-gray-80"
843-
/>
836+
<div
837+
className={cn(
838+
'overflow-clip relative before:absolute before:inset-0 before:pointer-events-none before:-translate-x-full group-hover:before:animate-[shimmer_1s_forwards] before:bg-gradient-to-r before:from-transparent before:via-white/10 before:to-transparent transition-transform ease-in-out duration-300'
839+
)}>
840+
<img
841+
loading={isLazy ? 'lazy' : 'eager'}
842+
src={src}
843+
alt={alt}
844+
className="aspect-[4/3] h-full w-full flex object-cover rounded-2xl bg-gray-10 dark:bg-gray-80"
845+
/>
846+
</div>
844847
</div>
845848
</div>
846849
))}

src/content/reference/react-dom/components/index.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,15 +162,137 @@ React はブラウザ組み込みのすべての HTML コンポーネントを
162162

163163
### カスタム HTML 要素 {/*custom-html-elements*/}
164164

165+
<<<<<<< HEAD
165166
ダッシュを含むタグ、例えば `<my-element>` をレンダーする場合、React は[カスタム HTML 要素](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements)をレンダーしていると想定します。React では、カスタム要素のレンダーは、組み込みのブラウザタグのレンダーとは異なる方法で行われます。
166167

167168
- すべてのカスタム要素の props は文字列にシリアライズされ、常に属性を使用して設定されます。
168169
- カスタム要素は `className` ではなく `class` を、`htmlFor` ではなく `for` を受け入れます。
170+
=======
171+
If you render a tag with a dash, like `<my-element>`, React will assume you want to render a [custom HTML element.](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements)
172+
>>>>>>> 27d86ffe6ec82e3642c6490d2187bae2271020a4
169173
170174
組み込みのブラウザ HTML 要素を [`is`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/is) 属性を用いてレンダーする場合も、カスタム要素として扱われます。
171175

176+
#### Setting values on custom elements {/*attributes-vs-properties*/}
177+
178+
Custom elements have two methods of passing data into them:
179+
180+
1) Attributes: Which are displayed in markup and can only be set to string values
181+
2) Properties: Which are not displayed in markup and can be set to arbitrary JavaScript values
182+
183+
By default, React will pass values bound in JSX as attributes:
184+
185+
```jsx
186+
<my-element value="Hello, world!"></my-element>
187+
```
188+
189+
Non-string JavaScript values passed to custom elements will be serialized by default:
190+
191+
```jsx
192+
// Will be passed as `"1,2,3"` as the output of `[1,2,3].toString()`
193+
<my-element value={[1,2,3]}></my-element>
194+
```
195+
196+
React will, however, recognize an custom element's property as one that it may pass arbitrary values to if the property name shows up on the class during construction:
197+
198+
<Sandpack>
199+
200+
```js src/index.js hidden
201+
import {MyElement} from './MyElement.js';
202+
import { createRoot } from 'react-dom/client';
203+
import {App} from "./App.js";
204+
205+
customElements.define('my-element', MyElement);
206+
207+
const root = createRoot(document.getElementById('root'))
208+
root.render(<App />);
209+
```
210+
211+
```js src/MyElement.js active
212+
export class MyElement extends HTMLElement {
213+
constructor() {
214+
super();
215+
// The value here will be overwritten by React
216+
// when initialized as an element
217+
this.value = undefined;
218+
}
219+
220+
connectedCallback() {
221+
this.innerHTML = this.value.join(", ");
222+
}
223+
}
224+
```
225+
226+
```js src/App.js
227+
export function App() {
228+
return <my-element value={[1,2,3]}></my-element>
229+
}
230+
```
231+
232+
</Sandpack>
233+
234+
#### Listening for events on custom elements {/*custom-element-events*/}
235+
236+
A common pattern when using custom elements is that they may dispatch [`CustomEvent`s](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent) rather than accept a function to call when an event occur. You can listen for these events using an `on` prefix when binding to the event via JSX.
237+
238+
<Sandpack>
239+
240+
```js src/index.js hidden
241+
import {MyElement} from './MyElement.js';
242+
import { createRoot } from 'react-dom/client';
243+
import {App} from "./App.js";
244+
245+
customElements.define('my-element', MyElement);
246+
247+
const root = createRoot(document.getElementById('root'))
248+
root.render(<App />);
249+
```
250+
251+
```javascript src/MyElement.js
252+
export class MyElement extends HTMLElement {
253+
constructor() {
254+
super();
255+
this.test = undefined;
256+
this.emitEvent = this._emitEvent.bind(this);
257+
}
258+
259+
_emitEvent() {
260+
const event = new CustomEvent('speak', {
261+
detail: {
262+
message: 'Hello, world!',
263+
},
264+
});
265+
this.dispatchEvent(event);
266+
}
267+
268+
connectedCallback() {
269+
this.el = document.createElement('button');
270+
this.el.innerText = 'Say hi';
271+
this.el.addEventListener('click', this.emitEvent);
272+
this.appendChild(this.el);
273+
}
274+
275+
disconnectedCallback() {
276+
this.el.removeEventListener('click', this.emitEvent);
277+
}
278+
}
279+
```
280+
281+
```jsx src/App.js active
282+
export function App() {
283+
return (
284+
<my-element
285+
onspeak={e => console.log(e.detail.message)}
286+
></my-element>
287+
)
288+
}
289+
```
290+
291+
</Sandpack>
292+
172293
<Note>
173294

295+
<<<<<<< HEAD
174296
[React の将来のバージョンでは、カスタム要素に対するより包括的なサポートが含まれます](https://github.com/facebook/react/issues/11347#issuecomment-1122275286)
175297

176298
これは、最新の実験的 (experimental) バージョンに React パッケージをアップグレードすることで試すことができます。
@@ -179,6 +301,16 @@ React はブラウザ組み込みのすべての HTML コンポーネントを
179301
- `react-dom@experimental`
180302

181303
React の実験的バージョンにはバグが含まれている可能性があります。本番環境では使用しないでください。
304+
=======
305+
Events are case-sensitive and support dashes (`-`). Preserve the casing of the event and include all dashes when listening for custom element's events:
306+
307+
```jsx
308+
// Listens for `say-hi` events
309+
<my-element onsay-hi={console.log}></my-element>
310+
// Listens for `sayHi` events
311+
<my-element onsayHi={console.log}></my-element>
312+
```
313+
>>>>>>> 27d86ffe6ec82e3642c6490d2187bae2271020a4
182314
183315
</Note>
184316
---

0 commit comments

Comments
 (0)