質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

3110閲覧

Reactで構成されたUIでAceエディターを使用したい

SasakiAkira

総合スコア37

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2016/02/03 14:29

編集2016/02/03 14:35

React初学者です。

html:index.html

1<div id="editor"></div> 2<div id="output"></div> 3 4</script> 5 var editor = ace.edit("editor"); 6 var Text = React.createClass({ 7 render: function (){ 8 return( 9 <div><span>HERE</span></div> 10 ); 11 } 12 }); 13 ReactDOM.render( 14 <Text />, 15 document.getElementById('output') 16 ); 17</script>

上のようなコードで、"HERE"の部分に、aceエディタの状態が変わるたびにエディタの内容を表示させたいのですが、どのようにするのが最もいいのかわかりません。

html:index.html

1<div id="editor"></div> 2<div id="output"></div> 3 4</script> 5var editor = ace.edit("editor"); 6editor.on('change',function(){ 7 var text = editor.getValue(); 8 var Text = React.createClass({ 9 render: function (){ 10 return( 11 <div><span>{this.props.text}</span></div> 12 ); 13 } 14 }); 15 ReactDOM.render( 16 <Text text={text}/>, 17 document.getElementById('output') 18 ); 19}); 20</script>

このようにすれば解決しないこともないですが、いささか悪いコードのような気がしてなりません。
ソースコードそのものでなく、「これを使うといい」とか「こういう方針で」のような回答で構いませんので、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

reactでaceエディタを用いるのであれば,
https://github.com/securingsincity/react-ace などはどうでしょうか.
AceEditorコンポーネントを提供しているので,AceEditorをReact.createClassなどで作成した,
コンポーネントと同じように扱うことができると思います.

投稿2016/02/16 10:20

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SasakiAkira

2016/02/17 12:48

ご解答感謝いたします。返信遅くなりまして申し訳ありません。 追加の質問なのですが、これは素のaceで使えるメソッド等も使えるのでしょうか?
退会済みユーザー

退会済みユーザー

2016/02/17 14:10

editor.on 系のイベントは,AceEditorコンポーネントのpropsである,onLoad,onBeforeLoad,onChange,onCopy,onPaste,onFocus,onBlurに関数を渡すことで登録できます. 例えば, ```jsx function sanpleFunction(newValue) { console.log('change',newValue); } <AceEditor オプション略   OnChange={sampleFunction} /> ```
SasakiAkira

2016/02/18 09:49

ありがとうございます。 では例えばsetPositionなどはどうやって使えば良いのでしょうか?
退会済みユーザー

退会済みユーザー

2016/02/18 14:48 編集

onLoadからedlitorのインスタンスを取得できます. そのインスタンスからいつものようにメソッドを呼べば大丈夫です. ```jsx const onLoad = newEditor => { this.editor = newEditor; } <AceEditor onLoad={onLoad} /> ``` 例えば, this.editor.selection.getCursor(); みたいな感じで使えます 詳しくは https://github.com/ajaxorg/ace/wiki/Embedding-APIhttps://github.com/securingsincity/react-ace#usage を読めばわかります
SasakiAkira

2016/02/19 09:36

ご丁寧に本当にありがとうございます。 疑問だった点を全て解消できました、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問