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 --- .../account_timeline/components/header.jsx | 52 +++++++++++++--------- .../components/features/account_timeline/index.jsx | 35 ++++++++------- 2 files changed, 49 insertions(+), 38 deletions(-) (limited to 'app/assets/javascripts/components/features/account_timeline') diff --git a/app/assets/javascripts/components/features/account_timeline/components/header.jsx b/app/assets/javascripts/components/features/account_timeline/components/header.jsx index 99a10562e..fb8b8b287 100644 --- a/app/assets/javascripts/components/features/account_timeline/components/header.jsx +++ b/app/assets/javascripts/components/features/account_timeline/components/header.jsx @@ -1,46 +1,40 @@ -import PureRenderMixin from 'react-addons-pure-render-mixin'; import ImmutablePropTypes from 'react-immutable-proptypes'; +import PropTypes from 'prop-types'; import InnerHeader from '../../account/components/header'; import ActionBar from '../../account/components/action_bar'; import MissingIndicator from '../../../components/missing_indicator'; -const Header = React.createClass({ - contextTypes: { - router: React.PropTypes.object - }, +class Header extends React.PureComponent { - propTypes: { - account: ImmutablePropTypes.map, - me: React.PropTypes.number.isRequired, - onFollow: React.PropTypes.func.isRequired, - onBlock: React.PropTypes.func.isRequired, - onMention: React.PropTypes.func.isRequired, - onReport: React.PropTypes.func.isRequired, - onMute: React.PropTypes.func.isRequired - }, - - mixins: [PureRenderMixin], + constructor (props, context) { + super(props, context); + this.handleFollow = this.handleFollow.bind(this); + this.handleBlock = this.handleBlock.bind(this); + this.handleMention = this.handleMention.bind(this); + this.handleReport = this.handleReport.bind(this); + this.handleMute = this.handleMute.bind(this); + } handleFollow () { this.props.onFollow(this.props.account); - }, + } handleBlock () { this.props.onBlock(this.props.account); - }, + } handleMention () { this.props.onMention(this.props.account, this.context.router); - }, + } handleReport () { this.props.onReport(this.props.account); this.context.router.push('/report'); - }, + } handleMute() { this.props.onMute(this.props.account); - }, + } render () { const { account, me } = this.props; @@ -68,6 +62,20 @@ const Header = React.createClass({ ); } -}); +} + +Header.propTypes = { + account: ImmutablePropTypes.map, + me: PropTypes.number.isRequired, + onFollow: PropTypes.func.isRequired, + onBlock: PropTypes.func.isRequired, + onMention: PropTypes.func.isRequired, + onReport: PropTypes.func.isRequired, + onMute: PropTypes.func.isRequired +}; + +Header.contextTypes = { + router: PropTypes.object +}; export default Header; diff --git a/app/assets/javascripts/components/features/account_timeline/index.jsx b/app/assets/javascripts/components/features/account_timeline/index.jsx index edae976b9..4987a2364 100644 --- a/app/assets/javascripts/components/features/account_timeline/index.jsx +++ b/app/assets/javascripts/components/features/account_timeline/index.jsx @@ -1,6 +1,6 @@ import { connect } from 'react-redux'; -import PureRenderMixin from 'react-addons-pure-render-mixin'; import ImmutablePropTypes from 'react-immutable-proptypes'; +import PropTypes from 'prop-types'; import { fetchAccount, fetchAccountTimeline, @@ -20,36 +20,30 @@ const mapStateToProps = (state, props) => ({ me: state.getIn(['meta', 'me']) }); -const AccountTimeline = React.createClass({ +class AccountTimeline extends React.PureComponent { - propTypes: { - params: React.PropTypes.object.isRequired, - dispatch: React.PropTypes.func.isRequired, - statusIds: ImmutablePropTypes.list, - isLoading: React.PropTypes.bool, - hasMore: React.PropTypes.bool, - me: React.PropTypes.number.isRequired - }, - - mixins: [PureRenderMixin], + constructor (props, context) { + super(props, context); + this.handleScrollToBottom = this.handleScrollToBottom.bind(this); + } componentWillMount () { this.props.dispatch(fetchAccount(Number(this.props.params.accountId))); this.props.dispatch(fetchAccountTimeline(Number(this.props.params.accountId))); - }, + } componentWillReceiveProps(nextProps) { if (nextProps.params.accountId !== this.props.params.accountId && nextProps.params.accountId) { this.props.dispatch(fetchAccount(Number(nextProps.params.accountId))); this.props.dispatch(fetchAccountTimeline(Number(nextProps.params.accountId))); } - }, + } handleScrollToBottom () { if (!this.props.isLoading && this.props.hasMore) { this.props.dispatch(expandAccountTimeline(Number(this.props.params.accountId))); } - }, + } render () { const { statusIds, isLoading, hasMore, me } = this.props; @@ -78,6 +72,15 @@ const AccountTimeline = React.createClass({ ); } -}); +} + +AccountTimeline.propTypes = { + params: PropTypes.object.isRequired, + dispatch: PropTypes.func.isRequired, + statusIds: ImmutablePropTypes.list, + isLoading: PropTypes.bool, + hasMore: PropTypes.bool, + me: PropTypes.number.isRequired +}; export default connect(mapStateToProps)(AccountTimeline); -- cgit