ΠΡΠ» Π±Ρ ΡΠ°Π΄ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π° ΡΡΠΎ ΠΏΠΈΠ°Ρ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π°ΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°Π½Ρ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ Π±Ρ ΠΏΠΎΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ React, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Ρ ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΡΡΠΎ Ρ ΠΈ ΡΠ΄Π΅Π»Π°Π». ΠΠΎ Ρ Π²Π½Π΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ²ΠΎΡ Π²ΠΈΠ»ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΡ ΡΠΎΡΠΊ Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΏΠΈΠ°ΡΠ°. ΠΡΠ»ΠΈ Ρ ΠΎΡΠ΅ΡΡ, Ρ ΠΌΠΎΠ³Ρ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²ΠΈΡΡ.
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠ΄Π½ΠΎ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ - Π½Π°ΡΡΠ½ΡΡΡ ΡΠΊΠΎΠ±Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ²ΡΠ·ΠΊΠΈ. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ javascript, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ Π²ΠΈΠ΄Π΅Π», Ace ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ DOM api Π½Π°ΠΏΡΡΠΌΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°. Π Π°Π·Π²Π΅ Π½Π΅Π»ΡΠ·Ρ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ jsdom Π΄Π»Ρ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π΄Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅?
NextJS ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ΠΎΠΌ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° React.JS. Π£ Π½ΠΈΡ Π΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΡΠ°ΡΡΡ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
import brace from 'brace';
import 'brace/mode/javascript';
import 'brace/mode/c_cpp';
import 'brace/theme/twilight';
import 'brace/theme/xcode';
import AceEditor from 'react-ace';
const textEditor = (props) => (
<div>
<AceEditor
mode={props.lan}
theme={props.theme}
onChange={props.onChange}
name="UNIQUE_ID_OF_DIV"
editorProps={{
$blockScrolling: true
}}
fontSize={21}
height='80vh'
width='100%'
/>
</div>
)
export default textEditor
`
ΠΠ°ΠΊ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ
import React, { Component } from 'react
import dynamic from 'next/dynamic'
const TextEditor = dynamic(import('../components/textEditor'), {
ssr: false
})
export default class Index extends Component {
...
render() {
return (
<div>
<TextEditor lan='javascript' theme="twilight"/>
</div>
)
}
Π΅ΡΡΡ Π»ΠΈ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ "next / dynamic"? ΠΈΠ»ΠΈ ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ..
Π― Π½Π΅ Π²ΠΈΠ΄Π΅Π» Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΡΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ Ρ ΡΠ»Π΅Π΄ΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Ρ Next, JS framework ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ.
ΠΡΠ΅Π½Ρ Π³ΡΡΡΡΠ½ΡΠΉ(((
ΠΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π² ΡΡΠΎΠΌ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Ace, ΠΈ Π½Π°ΠΌ ΠΎΠ½ Π½ΡΠ°Π²ΠΈΡΡΡ, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΡΠ»ΠΈ ΡΠΏΠΎΡΠΎΠ±Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ Gatsby.
@ saulflores95 ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ΄Π΅Ρ, Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΠΆΠΈΠΌ ΠΈ ΡΠ΅ΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ. ΠΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π», Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ» ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ react ace ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ ΡΠ²ΠΈΠ΄Π΅Π» ΡΠ²ΠΎΡ ΡΠ΅ΠΌΡ. ΠΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ°, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π» ΡΠ΅ΠΌΡ ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΡΠ±ΠΎΡΠΊΠΈ ace. ΠΡΠΎ Π²Π΅ΡΡΠΈΡ 8.0.0.
const Editor = dynamic(
async () => {
const ace = await import('react-ace');
import('ace-builds/src-noconflict/mode-javascript');
import('ace-builds/src-noconflict/theme-textmate');
return ace;
},
{
// eslint-disable-next-line react/display-name
loading: () => (
<NoContent style={{ height: '520px' }}>
<Spinner diameter={100} />
</NoContent>
),
ssr: false,
},
);
ΠΠ°ΠΊ ΠΈ ΠΊ Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΌΠΎΠΉ PR Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΡΡ SSR. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΊΠ°Π· react-ace
ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΡΠ΅, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΡΡΡΠΌ div
ΠΊΠΎΡΠΎΡΠΎΠ΅ Ace Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅.
Π― ΡΠ°Π±ΠΎΡΠ°Π» Π½Π°Π΄ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ SSR, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΡΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Ace. ΠΡΠΎ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ace Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠ΅ ΡΠ°ΡΡΠ΅ΡΡ ΠΌΠ°ΠΊΠ΅ΡΠ° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ Π² jsdom. ΠΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π³ΠΎ-ΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅Π³ΠΎ Π½Π° ΡΠΎ, ΡΡΠΎ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΌΠ°ΠΊΠ΅ΡΠ°.
Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ - ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΡΠ°Π³ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° react-ace
Π½Π΅ Π²Π·ΡΡΠ²Π°Π΅Ρ SSR, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ SSR Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @JohnGrisham , Π²Π°ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ. ΠΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡ Π½Π° ΡΡΠ΅Π±ΡΠ΅Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ
const Ace = dynamic(
async () => {
const ace = await import('react-ace');
require('ace-builds/src-noconflict/mode-mysql');
require('ace-builds/src-noconflict/theme-xcode');
return ace;
},
{
loading: () => (
<>Loading...</>
),
ssr: false,
})
...
<Ace mode="mysql" theme="xcode" />
@ saulflores95 ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ΄Π΅Ρ, Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΠΆΠΈΠΌ ΠΈ ΡΠ΅ΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ. ΠΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π», Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ» ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ react ace ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ ΡΠ²ΠΈΠ΄Π΅Π» ΡΠ²ΠΎΡ ΡΠ΅ΠΌΡ. ΠΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ°, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π» ΡΠ΅ΠΌΡ ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΡΠ±ΠΎΡΠΊΠΈ ace. ΠΡΠΎ Π²Π΅ΡΡΠΈΡ 8.0.0.
const Editor = dynamic( async () => { const ace = await import('react-ace'); import('ace-builds/src-noconflict/mode-javascript'); import('ace-builds/src-noconflict/theme-textmate'); return ace; }, { // eslint-disable-next-line react/display-name loading: () => ( <NoContent style={{ height: '520px' }}> <Spinner diameter={100} /> </NoContent> ), ssr: false, }, );
Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎ, ΡΠ΅ΠΆΠΈΠΌ ΠΈ ΡΠ΅ΠΌΠ° ΠΎΡΡΡΡΡΡΠ²ΡΡΡ (ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ require
Π²ΠΌΠ΅ΡΡΠΎ import
).
WSL2
[email protected]
(ΠΈ [email protected]
)[email protected]
[email protected]
[email protected]
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ npm run dev
(ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ next dev
).
ΠΠΎΠ½ΡΠΎΠ»Ρ Google Chrome 87 Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ:
ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΡΡ ΠΊ ace ΠΈΠ· ΡΠΊΡΠΈΠΏΡΠ° src, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ace.config.set ('basePath', 'path'), ΡΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΠΈ ΡΠ΅ΠΌ, ΠΈΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ webpack ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ace / webpack-resolver
Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΠ» ΠΊΠΎΠ΄ ΡΡΠ°ΡΡΡΠ° 404 Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°:
ΠΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
// code-editor.js
import AceEditor from 'react-ace'
import 'ace-builds/src-noconflict/mode-javascript'
import 'ace-builds/src-noconflict/theme-monokai'
const handleOnChange = () => {
console.log('Changed!')
}
export default function CodeEditor() {
return (
<AceEditor
mode="javascript"
theme="monakai"
onChange={handleOnChange}
name="editor01"
/>
)
}
// hello-world.js
import dynamic from 'next/dynamic'
const CodeEditor = dynamic(
() => import('../../components/code-editor'),
{ ssr: false },
)
export default function HelloWorld() {
return <CodeEditor />
}
Π― ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΡ, Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ 404:
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
NextJS ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ΠΎΠΌ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° React.JS. Π£ Π½ΠΈΡ Π΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΡΠ°ΡΡΡ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
`
ΠΠ°ΠΊ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ