从该组件外部更新已渲染的 ReactJS 组件的正确方法
Correct approach for updating an already rendered ReactJS component from outside that component
我在AngularJS应用程序中使用ReactJS组件。
在我的一个控制器中,我有以下逻辑来呈现OrdersTable
组件。
var search = $location.search();
var page = search.hasOwnProperty('page') ? search.page : 0;
var sort = search.hasOwnProperty('sort') ? search.sort : 'number,desc';
var r = React.createFactory(OrdersTable);
var component = React.render(r({
ordersSummaryFn: OrderService.ordersSummary,
page: page,
sort: sort
}), document.querySelector('.order-wrapper'));
当用户单击页面上的分页链接时,查询字符串会更改。 我的路由配置已reloadOnSearch
设置为 false
,我的控制器包含以下代码来侦听查询字符串更改。
$scope.$on('$routeUpdate', function() {
search = $location.search();
page = search.hasOwnProperty('page') ? search.page : 0;
sort = search.hasOwnProperty('sort') ? search.sort : 'number,desc';
component.pageOrders(page, sort);
});
因此,当页面和排序查询参数更改时,我将直接在组件初始呈现中返回的组件上调用 pageOrders
方法。 此方法对服务器执行 ajax 调用,然后更新OrdersTable
组件的状态,这反过来又会导致组件重新呈现。
我想知道如果我正在侦听要在 react 组件外部触发的事件,这是否是在挂载组件后更新/重新渲染组件的正确方法。 似乎component.pageOrders(page, sort)
调用不是执行此操作的正确方法。
谢谢:)
在这种情况下,组件可能不需要状态。 如果你以 angular 管理 http 请求,那么 react 组件更简单,更容易重用。
var containerTarget = document.querySelector('.order-wrapper');
// idempotent update function
function update(props){
React.render(React.createElement(OrdersTable, props), containerTarget);
}
var fetchDataAndUpdate = function(){
var search = $location.search();
var page = search.hasOwnProperty('page') ? search.page : 0;
var sort = search.hasOwnProperty('sort') ? search.sort : 'number,desc';
OrderService.ordersSummary({
page: page,
sort: sort
}).then(function(results){
update({data: results, page: page, sort: sort});
});
};
fetchDataAndUpdate();
$scope.$on('$routeUpdate', fetchDataAndUpdate);
// optionally do an initial render before you have data
update({});
您还可以在单击列标题或分页按钮时向其传递回调,并以角度做出相应的反应。
相关文章:
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在ReactJs中渲染子组件时重新加载子组件的数据
- 在reactjs组件中预加载数据
- ReactJS-在加载时渲染顶级组件
- 组件未使用ReactJS和React Router进行渲染
- ReactJS中未定义组件
- 我不知道如何正确地将REST响应对象传递给ReactJS子组件
- reactjs-redux,是否可以有一个由2个组件使用的状态
- ReactJS组件中显示的视频未更新
- 组件中的ReactJS意外令牌
- 当写入“;函数“;在ReactJS组件中
- 将可重复使用的组件与ReactJs和Flux一起用于多个存储
- ReactJS中的子-父组件通信
- 如何在reactjs中动态加载组件
- 从子窗体组件ReactJS中获取道具
- 可以't重新渲染子组件reactjs
- React 在点击时渲染其他组件.ReactJS中的最优模式
- 正在更新不工作的组件ReactJs
- 父组件多次重新渲染子组件ReactJS