我正试图找出通过我的路线传递数据的最佳方法.我知道我可以使用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>
提前致谢!
是否可以使用 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无法推断出一个变量不是,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使用可能未定义的电子邮件进行呼叫。但是,我们确保email在validate调用中定义了它。
Typescript是否有可能解决这个问题?