美文网首页
React - 坚定的支持者

React - 坚定的支持者

作者: DONG999 | 来源:发表于2018-11-04 12:09 被阅读0次

用了一段时间的React on springboot, 今天写下自己的感受

  1. React的组件化思想是我最欣赏的地方, 坚定了转向react的决心

  2. React的生态圈, 日渐成熟和强大, 国内尤其是几个大公司的支持和发展

  3. 代码写起来清爽, 编译, 发布都是静态的 page.

  4. 可以配合微软的typescripts

  5. 各种各样的third-party package 层出不穷, 未来前景光明

下面感受下, 用别人的组件写的一个界面

用户列表:

image.png
image.png

BizChart图表

image.png

sample codes:

@Form.create()
class UserListPage extends Component {
  state = {
    filteredInfo: null,
    sortedInfo: null,
  };


  componentDidMount() {
    const params = { current: 1, pageSize: 4 };
    this.props.fetchList(params);
  }

  handleChange = (pagination, filters, sorter) => {
    console.log('=======Various parameters==========>', pagination, filters, sorter);
    this.setState({
      filteredInfo: filters,
      sortedInfo: sorter,
    });

    this.props.fetchList(pagination);
  }

  clearFilters = () => {
    this.setState({ filteredInfo: null });
  }

  clearAll = () => {
    this.setState({
      filteredInfo: null,
      sortedInfo: null,
    });
  }

  setUserIdSort = () => {
    this.setState({
      sortedInfo: {
        order: 'descend',
        columnKey: 'userId',
      },
    });
  }

  renderMessage = content => <Alert style={{ marginBottom: 24 }} message={content} type="error" showIcon />;

  render() {
    const {
      jr,
      loading,
    } = this.props;

    const list = jr.data && jr.data.list ? jr.data.list : [];
    const pagination = jr.data && jr.data.pagination ? jr.data.pagination : {};

    const paginationProps = {
      showSizeChanger: true,
      showQuickJumper: true,
      ...pagination,
    };

    let { sortedInfo, filteredInfo } = this.state;
    sortedInfo = sortedInfo || {};
    filteredInfo = filteredInfo || {};

    //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
    const columns = [{
      title: 'UserId',
      dataIndex: 'userId',
      key: 'userId',
      filters: [
        { text: 'lisi', value: 'lisi' },
        { text: 'wanger', value: 'wanger' },
      ],
      filteredValue: filteredInfo.userId || null,
      onFilter: (value, record) => record.userId.includes(value),
      //sorter: (a, b) => a.userId.length - b.userId.length,
      sorter: (a, b) => a.userId.toUpperCase() < b.userId.toUpperCase(), //ignore case
      sortOrder: sortedInfo.columnKey === 'userId' && sortedInfo.order,
    },
    {
      title: 'UserName',
      dataIndex: 'userName',
    },
    {
      title: 'loginFailedCnt',
      dataIndex: 'loginFailedCnt',
      key: 'loginFailedCnt',
      sorter: (a, b) => a.loginFailedCnt - b.loginFailedCnt,
      sortOrder: sortedInfo.columnKey === 'loginFailedCnt' && sortedInfo.order,
    },
    {
      title: 'email',
      dataIndex: 'email',
    },
    {
      title: 'Role',
      dataIndex: 'fkRole',
    },
    {
      title: 'LatestActiveTime',
      dataIndex: 'latestActiveTime',
    }];
    return (
      <PageHeaderLayout title="用户列表">
        <div>
          <div>
            {this.props.jr.code && this.props.jr.code !== '200'
              && this.renderMessage(`查询后台数据错误!(${this.props.jr.msg})`)}
          </div>
          <div className={styles.tableOperations}>
            <Button type="primary" onClick={this.setUserIdSort}>Sort userId</Button>
            <Button type="primary" onClick={this.clearFilters}>Clear filters</Button>
            <Button type="primary" onClick={this.clearAll}>Clear filters and sorters</Button>
          </div>
          <Table
            columns={columns}
            rowKey="userId" //表格行 key 的取值,可以是字符串(json列名)或一个函数
            loading={loading}
            dataSource={list}
            pagination={paginationProps}
            onChange={this.handleChange} />
        </div>
      </PageHeaderLayout>
    );
  }
}


const mapStateToProps = (state) => {
  const jr = state.user.datalist;
  const loading = state.user.loading;
  return {
    jr,
    loading
  };
};


const mapDispatchToProps = dispatch => ({
  fetchList: params => dispatch({
    type: LIST_FETCH_USER,
    loading: true,
    params: params || {}
  }),
  redirectTo: url => dispatch(url)
});



export default connect(mapStateToProps, mapDispatchToProps)(UserListPage);

相关文章

  • React - 坚定的支持者

    用了一段时间的React on springboot, 今天写下自己的感受 React的组件化思想是我最欣赏的地方...

  • 最坚定的支持者

    最近想着改善一下早餐,就从网上入手了一台面包机,开始练习做面包。面包机的功能看似强大,可以做各种各样的面包。尽管已...

  • vocal

    场景他是她的坚定支持者。 He is a vocal supporter of her.

  • 成为成年孩子坚定的支持者

    很多优秀的父母都容易做一件事情——成为孩子最好的朋友【伴侣除外】。要知道,孩子在家庭之外已经有很多好朋友了。在家中...

  • Electron Cash发布功能机BCH钱包,低端市场利好来袭

    Electron Cash,是比特币现金(BCH)坚定支持者CoinGeek所投资开发的BCH区块链项目,每年投资...

  • 2022-07-05

    Michael Saylor 是一个坚定的比特币支持者,但作为一家上市公司 CEO,有人觉得他并不称职。加密社区中...

  • 2022-07-05

    Michael Saylor 是一个坚定的比特币支持者,但作为一家上市公司 CEO,有人觉得他并不称职。加密社区中...

  • 有一样信仰难能可贵

    我是坚定的科学主义支持者,我支持科学的发展,科技改变生活。 然而,人却不能没有一个信仰。 好好吃饭,...

  • 优点在所有人眼里,缺点只在我眼里

    9/27每日行动:爱的清单 ❤下定决心,成为你伴侣最坚定的支持者,摒弃任何评判的念头。学着为你的伴侣着想,专注他的...

  • 红楼梦中,贾母为何不为黛玉定下宝玉?深谋远虑,才是真心疼爱

    红楼梦中的贾母,极尽宠爱两个“玉儿”。 作为祖母,她是“木石前盟“的坚定支持者,甚至用“冤家”来形容宝玉和黛玉,可...

网友评论

      本文标题:React - 坚定的支持者

      本文链接:https://www.haomeiwen.com/subject/gwyrxqtx.html