小编Syl*_*ier的帖子

当道具改变时,反应流星数据容器不会更新子节点

我一直在努力解决这个问题很长一段时间,但未能找到任何答案.

我使用react-meteor-data来管理我的数据,并在我的流星应用程序中做出反应.处理mongo的数据时工作正常,但我不能让它与道具反应.

在这里,在App.js,我打电话给我的容器,我想反应和重新呈现在应用变化的状态.

<MyContainer someState={this.state.MyState} />
Run Code Online (Sandbox Code Playgroud)

MyContainer.js中,我有一个createContainer来自反应流星数据

export default createContainer(params => {
   Meteor.subscribe('someCollection');

   return {
      someCollection: SomeCollection.find({}).fetch(),
      stateFromParent: params.someState
   };
}, MyContainer);
Run Code Online (Sandbox Code Playgroud)

这在第一次渲染组件时工作正常,MyContainer正确获取MyState.

事情是,当MyStateApp改变时,我可以在Chrome Dev React工具中看到它确实已更新createContainer(ReactMeteorDataComponent具有正确更新状态的道具)但该createContainer功能未运行,因此props不更新MyContainer.

所以这些props是从谁更新,ReactMeteorDataComponent而不是MyContainer由谁无限期地保存数据.它就像createContainer不考虑其prop的更新有变化,因此不运行其功能.

我真的觉得我错过了一些东西,因为这似乎是非常基本的东西,谢谢你的帮助.

meteor reactjs

5
推荐指数
1
解决办法
694
查看次数

React:如何根据用户角色安全地显示组件

我正在尝试显示 admin Dashboardreact并且Meteor仅当当前用户是admin 时

我正在调用一个服务器方法,该方法检查用户权限并仅在此方法返回时呈现管理组件true

此服务器调用是异步的,因此组件未呈现,通常我使用状态管理此异步调用,但我不想在此处公开任何状态(不希望有人更改状态并访问管理仪表板) .

这是代码:

export default class AdminChecker extends Component {
  isItAdmin() {
    // Get the id of current user
    const userId = Meteor.userId();
    if (userId) {
      // call a server method which returns true if current user is Admin
      Meteor.call('checkAdminId', userId, (err, authorized) => {
        if (err) {
          console.log(err);
          return null;
        }
        return (authorized) ? <AdminDashboard /> : null;
      });
    }
  }
  render() {
    return (
      <div …
Run Code Online (Sandbox Code Playgroud)

meteor reactjs

3
推荐指数
1
解决办法
2298
查看次数

标签 统计

meteor ×2

reactjs ×2