文字列をどうすればjsx
に変換できますか?たとえば、textarea
から文字列を取り込むと、どうすればReact
要素に変換できますか?文字列をjsxに変換するにはどうすればよいですか?
クライアントでこれを変換するプロセスは何ですか?出来ますか?あなたの.babelrc
ファイルに次の行を追加します。プリセットreact
npm install --save-dev babel-cli babel-preset-react
でバベルを使用する必要が
文字列をどうすればjsx
に変換できますか?たとえば、textarea
から文字列を取り込むと、どうすればReact
要素に変換できますか?文字列をjsxに変換するにはどうすればよいですか?
クライアントでこれを変換するプロセスは何ですか?出来ますか?あなたの.babelrc
ファイルに次の行を追加します。プリセットreact
npm install --save-dev babel-cli babel-preset-react
でバベルを使用する必要が
:
{
"presets": ["react"]
}
は、あなたがより多くの情報hereを見つけることができます
./node_modules/.bin/babel script.js --out-file script-compiled.js
を実行します
です。動的に行う方法はありません。私はそれを行うにはコマンドラインから何かを実行する必要がありますか?文字列を 'textarea'に入力してページにレンダリングできるようにしたいのです。 – jhamm
いいえ、デモンストレーションのためのものです。http://babeljs.io/に行き、gulpやgruntのような多くのツールの実装を参照してください。 –
あなたは 'require(" babel-core ")を実行できます。 code ");' –
あなたは、文字列
<div>Hello World</div>
考えると、我々は非常に厳格であれば、これは実際には有効なJSXです。問題は、このJSX文字列をReactコードにコンパイルする方法です。
最も簡単で推奨される方法は、Babelのようなライブラリをダウンロードしてコードを変換することです。 Babelはrepl doesのようにブラウザで実行できます。
JSXを他のフォーマットに変換することもできますが、この場合はコンパイラを見つけたり、自分で作成する必要があります。作成する
手順JSX =>自分が変態に反応:
ように文字列に戻ってASTと出力コードを解析AST表現にコードの文字列を変換しますJSXをサポートするespreeのようなASTパーサーが必要です。そして、ASTツリーを歩き、React-codeのようなものを出力するコードを作成することができます。
JSXデータのASTツリーは、通常のJavaScript ASTとJSXノードで構成されています。パーサーはツリーを歩き、JSXノードを通常のJavaScriptコードに変換する必要があります。
タグがdivのJSXノードにコンパイルしてコンパイルすると、その呼び出しのパラメータとして挿入されたASTノードの下にある属性とサブノードを持つReact.createElement("div",...
コールにコンパイルする必要があります。
ASTツリーを処理できる小さなAST Walkerを作成しました。ASTWalkerは、ASTツリーをReactやDOMのような出力フォーマットに変換するために使用できます。
それを使用する方法のオンライン例はここにある:
http://codepen.io/teroktolonen/pen/KzWVqx?editors=1010
メインのコードは次のようになります。
// here is the JSX string to parse
var codeStr = "<div>Hello world</div>";
var walker = ASTWalker({
defaultNamespace: "react",
});
// compile AST representation out of it.
var rawAST = espree.parse(codeStr, {
ecmaVersion: 6,
sourceType: "script",
// specify additional language features
ecmaFeatures: {
// enable JSX parsing
jsx: true
}
});
// then you can walk the walk to create the code
walker.startWalk(rawAST, {});
var code = walker.getCode();
console.log(code);
document.getElementById("sourceCode").innerHTML = code;
免責事項:ライブラリはリアクトにコンパイルするためにintentedされていません。ほとんどの場合、defaultNamespace: "DOM",
と一緒に使用して、単純なJavaScript + DOM表現にコンパイルします。単純なタグよりも複雑なものを試そうとすると、エラーが発生する可能性があります。
重要なことは、ReactはJSXの出力形式だけでなく、
私はいくつかの成功(自己閉じタグは問題を引き起こしますが、解決策はプルリクエストに含まれています...)でhtml-to-reactを使用しています。マークアップ文字列をDOMのようなオブジェクトとして解析し、反応する元素。あなたはそれを避けることができれば、そうではありません。しかし、それは仕事を終わらせる。
HTMLから反応githubの時:https://github.com/mikenikles/html-to-react
ライブラリは現在https://github.com/aknuds1/html-to-reactにあります。これは私が探していたものです。 –
あなたはJSXの使用を検討することができますが、以下のdangerouslySetInnerHTML
使用例属性:
class YourComponent{
render() {
someHtml = '<div><strong>blablabla<strong><p>another blbla</p/></div>'
return(
<div className="Container" dangerouslySetInnerHTML={{__html:
someHtml}}></div>
)
}
}
を私は知っている後半あなたのためにある:)が、誰かを助けることを願っています
JSXに変換するサンプルの文字列を入力してください。 –
「
サンプル文字列は単なる純粋なHTMLです。単にHTMLを挿入したいのであれば、 'dangerouslySetInnerHTML'が行く方法です。あなたが好きなら、私はこれをより詳細な答えで肉体化することができます。 –