その1 準備

今回は丸っとhttps://qiita.com/ksakiyama134/items/b7f0afcd43e7411f898dを参考にします。

とりあえずプロジェクト作成&yarn add

さっそくエディタをつくっていきましょう。とはいえ、Reactが動く環境をまず整えないといけません。create-react-appを使ってプロジェクトを生成します。
$ create-react-app 201812-react-slate-app
$ cd 201812-react-slate-app
Slateをインストールします。Slateはimmutableにも依存しているので、それもインストールします。
$ yarn add slate slate-react immutable

----------

https://qiita.com/ksakiyama134/items/b7f0afcd43e7411f898d

初期化

ディレクトリ構造は

src/
├─ index.js
├─ index.css
├─ App.css
├─ App.js
├─ components/
   ├─ editor.css
   ├─ editor.js

のようにする。

ファイルをいじる

どちらもhttps://qiita.com/ksakiyama134/items/b7f0afcd43e7411f898dを参考にして、

App.js

import React from "react";
import TextEditor from "./components/editor";
import "./App.css";

function App() {
   return <TextEditor / > ;
}

export default App;

components/editor.js

import React from "react";
import { Editor } from "slate-react";
import { Value } from "slate";

const initialValue = Value.fromJSON({
 document: {
   nodes: [
     {
       object: "block",
       type: "paragraph",
       nodes: [
         {
           object: "text",
           leaves: [{ text: "Hello Slate.js!!!" }]
         }
       ]
     }
   ]
 }
});

class TextEditor extends React.Component {
 state = {
   value: initialValue
 };

 onChange = ({ value }) => {
   this.setState({ value });
 };

 render() {
   return (
     <Editor
       value={this.state.value}
       onChange={this.onChange}
       renderMark={this.renderMark}
     />
   );
 }
}

export default TextEditor;

のようにしておく。

onKeyDownは今は使わないので削除している。

この記事が気に入ったらサポートをしてみませんか?