From 1948f9e767c5c8f7cb52337ce777a61b5ad1a599 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Sat, 22 Apr 2017 03:05:35 +0900 Subject: Remove deprecated features at React v15.5 (#1905) * Remove deprecated features at React v15.5 - [x] React.PropTypes - [x] react-addons-pure-render-mixin - [x] react-addons-test-utils * Uncommented out & Add browserify_rails options * re-add react-addons-shallow * Fix syntax error from resolve conflicts * follow up 59a77923b368d48c590cd9f4a0c6b73ce972d33f --- .../features/account/components/action_bar.jsx | 30 ++++++------ .../features/account/components/header.jsx | 53 +++++++++++----------- 2 files changed, 41 insertions(+), 42 deletions(-) (limited to 'app/assets/javascripts/components/features/account') diff --git a/app/assets/javascripts/components/features/account/components/action_bar.jsx b/app/assets/javascripts/components/features/account/components/action_bar.jsx index 80a32d3e2..3aefee027 100644 --- a/app/assets/javascripts/components/features/account/components/action_bar.jsx +++ b/app/assets/javascripts/components/features/account/components/action_bar.jsx @@ -1,5 +1,5 @@ -import PureRenderMixin from 'react-addons-pure-render-mixin'; import ImmutablePropTypes from 'react-immutable-proptypes'; +import PropTypes from 'prop-types'; import DropdownMenu from '../../../components/dropdown_menu'; import { Link } from 'react-router'; import { defineMessages, injectIntl, FormattedMessage, FormattedNumber } from 'react-intl'; @@ -28,20 +28,7 @@ const outerLinksStyle = { lineHeight: '18px' }; -const ActionBar = React.createClass({ - - propTypes: { - account: ImmutablePropTypes.map.isRequired, - me: React.PropTypes.number.isRequired, - onFollow: React.PropTypes.func, - onBlock: React.PropTypes.func.isRequired, - onMention: React.PropTypes.func.isRequired, - onReport: React.PropTypes.func.isRequired, - onMute: React.PropTypes.func.isRequired, - intl: React.PropTypes.object.isRequired - }, - - mixins: [PureRenderMixin], +class ActionBar extends React.PureComponent { render () { const { account, me, intl } = this.props; @@ -100,6 +87,17 @@ const ActionBar = React.createClass({ ); } -}); +} + +ActionBar.propTypes = { + account: ImmutablePropTypes.map.isRequired, + me: PropTypes.number.isRequired, + onFollow: PropTypes.func, + onBlock: PropTypes.func.isRequired, + onMention: PropTypes.func.isRequired, + onReport: PropTypes.func.isRequired, + onMute: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired +}; export default injectIntl(ActionBar); diff --git a/app/assets/javascripts/components/features/account/components/header.jsx b/app/assets/javascripts/components/features/account/components/header.jsx index a660dee37..3ebfb7df3 100644 --- a/app/assets/javascripts/components/features/account/components/header.jsx +++ b/app/assets/javascripts/components/features/account/components/header.jsx @@ -1,5 +1,5 @@ -import PureRenderMixin from 'react-addons-pure-render-mixin'; import ImmutablePropTypes from 'react-immutable-proptypes'; +import PropTypes from 'prop-types'; import emojify from '../../../emoji'; import escapeTextContentForBrowser from 'escape-html'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; @@ -21,30 +21,28 @@ const makeMapStateToProps = () => { return mapStateToProps; }; -const Avatar = React.createClass({ +class Avatar extends React.PureComponent { - propTypes: { - account: ImmutablePropTypes.map.isRequired, - autoPlayGif: React.PropTypes.bool.isRequired - }, - - getInitialState () { - return { + constructor (props, context) { + super(props, context); + + this.state = { isHovered: false }; - }, - - mixins: [PureRenderMixin], + + this.handleMouseOver = this.handleMouseOver.bind(this); + this.handleMouseOut = this.handleMouseOut.bind(this); + } handleMouseOver () { if (this.state.isHovered) return; this.setState({ isHovered: true }); - }, + } handleMouseOut () { if (!this.state.isHovered) return; this.setState({ isHovered: false }); - }, + } render () { const { account, autoPlayGif } = this.props; @@ -69,19 +67,14 @@ const Avatar = React.createClass({ ); } -}); +} -const Header = React.createClass({ - - propTypes: { - account: ImmutablePropTypes.map, - me: React.PropTypes.number.isRequired, - onFollow: React.PropTypes.func.isRequired, - intl: React.PropTypes.object.isRequired, - autoPlayGif: React.PropTypes.bool.isRequired - }, +Avatar.propTypes = { + account: ImmutablePropTypes.map.isRequired, + autoPlayGif: PropTypes.bool.isRequired +}; - mixins: [PureRenderMixin], +class Header extends React.Component { render () { const { account, me, intl } = this.props; @@ -142,6 +135,14 @@ const Header = React.createClass({ ); } -}); +} + +Header.propTypes = { + account: ImmutablePropTypes.map, + me: PropTypes.number.isRequired, + onFollow: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + autoPlayGif: PropTypes.bool.isRequired +}; export default connect(makeMapStateToProps)(injectIntl(Header)); -- cgit