小编Bez*_*ezR的帖子

React-router:通过路由传递数据

我正试图找出通过我的路线传递数据的最佳方法.我知道我可以使用params但是某些类型的数据不属于params.

例如:我有一个显示应用程序列表的索引页面.每个应用程序旁边都有一个按钮,它将引导您进入该应用程序的视图.

我想将应用程序本身传递给Application处理程序.但是,通过params传递整个应用程序是没有意义的.虽然将应用程序标识符传递给params(即:id或:name)确实有意义

所以我认为我应该这样做的方法是将应用程序标识符传递给params,然后在Application组件中搜索我的ApplicationStore以获取给定标识符的相应应用程序.

但是,通过应用程序本身会不会更容易,更快?有没有办法做到这一点.有没有理由不这样做?

这是一些代码:

<Link to="showApplication" params={{name: application.name}}>View</Link>

要么

<Link to="showApplication" params={{application: application}}>View</Link>

提前致谢!

reactjs reactjs-flux react-router

8
推荐指数
1
解决办法
5650
查看次数

Typescript - 获取 typeof 函数参数

是否可以使用 TypeScript 获取函数参数的类型?

我有一个函数返回另一个返回承诺的函数:

type login = (params: LoginParams) => dispatched
type dispatched = (dispatch: Dispatch) => Promise<any>
Run Code Online (Sandbox Code Playgroud)

我想创建一个以函数为参数的泛型类型并创建一个新的函数类型。例如:

GenericFunctionType<login>
Run Code Online (Sandbox Code Playgroud)

将创建以下类型:

(LoginParams) => Promise<any>
Run Code Online (Sandbox Code Playgroud)

简而言之 GenericFunctionType 使用初始函数(登录)的参数和返回函数的返回值(调度)创建一个函数类型。


我想要这个,因为我正在使用 Redux。这是我的用例:

//Action Creator
export type login = (params: LoginParams) => ThunkAction<Promise<any>>;

export const login: login = params => async dispatch => {
  dispatch({ type: LOGIN });

  const promise = httpClient.post('/auth/sign_in', params);

  ...stuff

  return promise;
};
Run Code Online (Sandbox Code Playgroud)

我的登录组件是这样连接的:

interface LoginProps {
  login: ???
}

class Login extends React.component<LoginProps, {}> {...}

connect(null, {login})(Login)
Run Code Online (Sandbox Code Playgroud)

我试图找到一种可重用的方式来输入已包装在 dispatch …

typescript redux

4
推荐指数
2
解决办法
6663
查看次数

从返回值推断类型

看来Typescript无法推断出一个变量不是,null或者undefined该变量是否存在的检查是在另一个函数中完成的。这是一个例子。

(我在打开--strictNullChecks的情况下使用Typescript。)

const login = (email: string) => {
    console.log(email);
}

const handleButtonClick = (email?: string) => {
    const error = validate(email);
    if (error) {
        return;
    }

    return login(email);
}

const validate = (email?: string) => {
    if (!email) {
        return 'There was an error'
    }
}
Run Code Online (Sandbox Code Playgroud)

Typescript抱怨handleButtonClick您无法login使用可能未定义的电子邮件进行呼叫。但是,我们确保emailvalidate调用中定义了它。

Typescript是否有可能解决这个问题?

typescript

4
推荐指数
1
解决办法
57
查看次数

标签 统计

typescript ×2

react-router ×1

reactjs ×1

reactjs-flux ×1

redux ×1