umijs / umi-examples

examples for umi.js
316 stars 279 forks source link

feat: update typescript demo #43

Closed DiamondYuan closed 5 years ago

DiamondYuan commented 5 years ago
import Link from "umi/link";
import Welcome from "@/components/Welcome";
import styles from "./index.css";
import { connect } from "dva";
import { GlobalState } from "@/common/type";
import { add, minus } from "@/models/counter";
import { Dispatch } from "redux";

const mapStateToProps = ({ counter }: GlobalState) => {
  return counter;
};

type PageStateProps = ReturnType<typeof mapStateToProps>;
type PageProps = PageStateProps & {
  dispatch: Dispatch<GlobalState>;
};

const page = function(props: PageProps) {
  const handleAdd = () => {
    props.dispatch(add());
  };

  const handleMinus = () => {
    props.dispatch(minus());
  };

  return (
    <>
      <div className={styles.normal}>
        <h1>Page index</h1>
      </div>

      <div>
        <div>count {props.number}</div>
        <button onClick={handleAdd}>add</button>
        <button onClick={handleMinus}>minus</button>
      </div>
      <Welcome />
      <Link to="/users">
        <button>go to /users</button>
      </Link>
    </>
  );
};

export default connect(mapStateToProps)(page);

这样也可以

DiamondYuan commented 5 years ago

我把 actions 抽了出去。好处是所有地方都可以

import { xxx, xx } from "@/actions/namespace";