如果您对成功执行异步redux动作后过渡到另一条路由感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于成功执行异步redux动作后过渡到另一条路由的详细内容,我们还将为您解答r
如果您对成功执行异步redux动作后过渡到另一条路由感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于成功执行异步redux动作后过渡到另一条路由的详细内容,我们还将为您解答redux异步操作的相关问题,并且为您提供关于Android – 如何将一条路径叠加在另一条路径之上、React-Redux:动作必须是普通对象。使用自定义中间件进行异步操作、React-Redux:动作必须是普通对象使用自定义中间件进行异步操作、reactjs – Redux:从另一个动作创建者那里调用一个动作的有价值信息。
本文目录一览:- 成功执行异步redux动作后过渡到另一条路由(redux异步操作)
- Android – 如何将一条路径叠加在另一条路径之上
- React-Redux:动作必须是普通对象。使用自定义中间件进行异步操作
- React-Redux:动作必须是普通对象使用自定义中间件进行异步操作
- reactjs – Redux:从另一个动作创建者那里调用一个动作
成功执行异步redux动作后过渡到另一条路由(redux异步操作)
我有一组非常简单的react组件:
container
挂接到redux并处理操作,存储订阅等list
显示我的物品清单new
这是一种将新项目添加到列表的形式
我有一些反应路由器路由,如下所示:
<Route name=''products'' path=''products'' handler={ProductsContainer}> <Route name=''productNew'' path=''new'' handler={ProductNew} /> <DefaultRoute handler={ProductsList} /></Route>
以便显示list
或form
而不显示两者。
我想做的是,一旦成功添加了新项目,就让应用程序重新路由到列表。
到目前为止,我的解决方案是.then()
在async之后设置a dispatch
:
dispatch(actions.addProduct(product) .then(this.transitionTo(''products'')))
这是执行此操作的正确方法,还是应该以某种方式触发其他操作以触发路线更改?
答案1
小编典典如果您不想使用像Redux Router这样的更完整的解决方案,则可以使用Redux History
Transitions,它可以让您编写如下代码:
export function login() { return { type: LOGGED_IN, payload: { userId: 123 } meta: { transition: (state, action) => ({ path: `/logged-in/${action.payload.userId}`, query: { some: ''queryParam'' }, state: { some: ''state'' } }) } };}
这与您的建议相似,但稍微复杂一点。它仍然在后台使用相同的历史库,因此与React
Router兼容。
Android – 如何将一条路径叠加在另一条路径之上
private void drawGreen(Canvas canvas) { greenPaint.setColor(0xFF00AA00); if (start) { greenPath = new Path(); greenPath.reset(); greenPath.moveto(pathArrayX.get(0),pathArrayY.get(0)); start = false; } if (isInsideCircle(pathArrayX.get(pathIndex),pathArrayY.get(pathIndex),curX,curY,TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,25,getResources().getdisplayMetrics()))) { greenPath.lineto(pathArrayX.get(pathIndex),pathArrayY.get(pathIndex)); canvas.drawPath(greenPath,greenPaint); pathIndex++; } } private boolean isInsideCircle(float x,float y,float centerX,float centerY,float radius) { return Math.pow(x - centerX,2) + Math.pow(y - centerY,2) < Math.pow(radius,2); }
在我的应用程序中,我首先绘制一条红色路径,其坐标存储在ArrayLists pathArrayX和pathArrayY中.我正在跟踪在鼠标下移动的圆形ImageView的X和Y坐标,并且当用户从头到尾悬停在路径上时,我希望用绿色路径覆盖红色路径.当用户盘旋在红色路径上时,他们已经完成的红色路径的部分将被沿着相同段的绿色路径覆盖. ImageView(curX和curY)的X和Y坐标是从正在运行的线程计算的.
但是,我的应用程序似乎根本没有绘制绿色路径.我在这里做错了吗?
解决方法
假设它在onDraw(Canvas)中被调用,看起来它可能缺少循环的外部代码.看到你最后在做pathIndex,你使用的是while循环吗?如果你只是要循环遍历点,那么使用for循环,因为如果忘记增加计数器或做错误,或者在多个地方执行,while循环更容易陷入无限循环.
附注:如果布尔开始标志仅用于懒惰地初始化greenPath,则应该废弃它并使用if(greenPath == null){作为一般做法.使用可以直接从对象推断的状态,如果可以帮助它,则不使用标志,这使代码更清晰.
React-Redux:动作必须是普通对象。使用自定义中间件进行异步操作
未处理的拒绝(错误):动作必须是普通对象。使用自定义中间件进行异步操作。
我想在每个帖子中添加评论。因此,当获取帖子运行时,我想为所有帖子调用获取评论API。
export function bindComments(postId) {
return API.fetchComments(postId).then(comments => {
return {
type: BIND_COMMENTS,comments,postId
}
})
}
React-Redux:动作必须是普通对象使用自定义中间件进行异步操作
未处理的拒绝(错误):动作必须是普通对象。使用自定义中间件进行异步操作。
我想在每个帖子中添加评论。因此,当获取帖子运行时,我想为所有帖子调用获取评论API。
export function bindComments(postId) {
return API.fetchComments(postId).then(comments => {
return {
type: BIND_COMMENTS,comments,postId
}
})
}
reactjs – Redux:从另一个动作创建者那里调用一个动作
这是主要的搜索操作:
// actions/search.js import fetch from ''isomorphic-fetch''; import config from ''../../server/config''; export const receiveSearchResults = (results) => ({ type: ''RECEIVE_SEARCH_RESULTS'',results }) export const searchRequestFailed = () => ({ type: ''SEARCH_REQUEST_Failed'' }) export const fetchSearchResults = () => { return (dispatch,getState) => { // Generate the query url const query = getSearchQuery(); // returns a url string return fetch(query) .then(response => response.json() .then(json => ({ status: response.status,json }) )) .then(({ status,json }) => { if (status >= 400) dispatch(searchRequestFailed()) else dispatch(receiveSearchResults(json)) },err => { dispatch(searchRequestFailed()) }) } }
当我从连接的React组件调用它时,fetchSearchResults工作正常.但是,我无法从以下操作创建者调用该方法(这是过滤器操作创建者之一):
// actions/use-types.js import fetchSearchResults from ''./search''; export const toggleUseTypes = (use) => { return (dispatch) => { dispatch({type: ''TOGGLE_USE_TYPES'',use: use}) fetchSearchResults() } }
运行它会产生:未捕获的TypeError:(0,_search2.default)不是函数.当我在toggleUseTypes中运行dispatch(fetchSearchResults())时也会发生同样的情况.
我肯定犯了一个新手错误 – 有谁知道如何解决这个问题并从actions / use-types.js动作调用fetchSearchResults方法?我非常感谢其他人可以提出的关于这个问题的建议!
解决方法
>您正在错误地导入fetchSearchResults函数
>这是TypeError _search2.default的来源.
>未捕获的TypeError:(0,_ search2.default)不是函数
>您正在错误地调度fetchSearchResults操作/ thunk
错误1:导入错误
// This won''t work. fetchSearchResults is not the default export import fetchSearchResults from ''./search''; // Use named import,instead. import {fetchSearchResults} from ''./search'';
错误2:操作使用不正确
// This won''t work,it''s just a call to a function that returns a function fetchSearchResults() // This will work. dispatching the thunk dispatch(fetchSearchResults())
我们今天的关于成功执行异步redux动作后过渡到另一条路由和redux异步操作的分享就到这里,谢谢您的阅读,如果想了解更多关于Android – 如何将一条路径叠加在另一条路径之上、React-Redux:动作必须是普通对象。使用自定义中间件进行异步操作、React-Redux:动作必须是普通对象使用自定义中间件进行异步操作、reactjs – Redux:从另一个动作创建者那里调用一个动作的相关信息,可以在本站进行搜索。
本文标签: