JavaScript初学者がNode.jsのReactはてなブックマークボタンモジュールつくった

uraway/react-hatenabookmark-button · GitHub

たった40行で作れてしまいました。 scrpitタグ作って必要なものを突っ込んでるだけです。 以下ソースコード。

モジュールをまとめました。 こちらを使用してください。

uraway/react-social-sharebuttons: Simple Re... - GitHub

import React from 'react';
import ReactDOM from 'react-dom';

export default class HatenabookmarkButton extends React.Component {
  constructor(props) {
    super(props);
    this.state = ({ initialized: false });
  }

  componentDidMount() {
    if (this.state.initialized) {
      return;
    }

    let hatenabutton = ReactDOM.findDOMNode(this.refs.hatenabutton);
    let hatenascript = document.createElement('script');
    hatenascript.src = 'https://b.st-hatena.com/js/bookmark_button.js';
    hatenascript.type = 'text/javascript';
    hatenabutton.parentNode.appendChild(hatenascript);

    this.setState({ initialized: true });
  }

  render() {
    return (
      <a
        ref="hatenabutton"
        href={'http://b.hatena.ne.jp/entry/' + this.props.url}
        className="hatena-bookmark-button"
        data-hatena-bookmark-title={this.props.title}
        data-hatena-bookmark-layout={this.props.layout}
        data-hatena-bookmark-lang="ja"
        title="このエントリーをはてなブックマークに追加">
        <img src="https://b.st-hatena.com/images/entry-button/button-only@2x.png"
            alt="このエントリーをはてなブックマークに追加"
            style={{ width:'20', height:'20', border: 'none' }} />
        </a>
      );
  }
}

インストール

$ npm i --save react-hatenabookmark-button

使い方

使い方は次の通り、 url, title, layoutプロパティを指定してあげるだけです。 urlとtitleプロパティはデフォルトでは設置されたページのものをそれぞれ使用します。

import { HatenabookmarkButton } from 'react-hatenabookmark-button';

class App extends React.Component {
  render() {
    let url = "https://github.com";
    let layout = "simple-balloon";

    return (
      <HatenabookmarkButton url={url} layout={layout} />
    );
  }
}