ReactでTwitterのタイムラインなどを埋め込む


React(Next.js)でTwitterの埋め込みを行いたい。

主にタイムラインが対象ですが、一応何でも埋め込めるようにしておきます。

ライブラリを使ったり使わなかったり。

公式埋め込み

まず前提として公式で簡単に埋め込みコードが作れます。

https://publish.twitter.com/

 

コレクション、ツイート、プロフィール、リスト、モーメント、いいね、各種ボタンを埋め込みに使える。検索結果はないんですね。

 

これらはツイートなどの単体、タイムライン、ボタン形式で埋め込まれる。

 

ここで生成するとdomscript読み込みを出されるのですが、Reactで外部scriptの読み込みは普段することが少ないです。

場合によってはindex.html(nextjsなら_document.js)にで読み込むのもいいけど、埋め込まないページでは負荷が増えるだけになる。

それでライブラリを使うのがいいよという書き込みを見つけたので使ってみます。

react-tweet-embed★85

最初に見つけたライブラリ。

ドキュメントがしっかりしてて使いやすいんだけど、type宣言がない(有志も含めて)ためTypeScriptベースの環境で使えなかった。

react-twitter-widgets★139

こちらはTypeScriptで使えるけどほとんど説明のないライブラリ。

サンプルを見てもリストのタイムラインを表示する方法すらわからない。

色々調べたところ以下のような感じでリストのタイムラインを表示できます。

そもそもライブラリが必要なのか?

需要がないわけでもなさそうなのに使われてるライブラリが見当たらない。

考え直してみると、そもそもスクリプトさえ読み込まれればいいんです。

 

DOMが存在する状態(マウント後)でappendしてしまいます。

複数回呼ばれたとき用に適当なフラグも付けておきます。

肝心の本体はpublishでコピーしたものからスクリプトを削ってclassclassNameに変えただけです。

ツイートなど単体の埋め込みの場合はblockquote内に直接文章が入ったりするのですが、環境によって<br><br />に変える必要もあります。

 

なんかスタイルがもろもろ違うのが気になりますがまぁ別にいいか。

最初に答えを見つけていたのに変に遠回りした気分です。


コメントを残す

メールアドレスが公開されることはありません。