尝试触发 Mobx 操作会导致未捕获的类型错误

罗比

我正在尝试触发一个 Mobx 操作,它生成错误“未捕获的类型错误:无法读取未定义的属性 'arrowVisible'”。不知道为什么(函数是由 react-waypoint 触发的):

这里是codeandbox.io复制)

import React from "react";
import PropTypes from "prop-types";
import { Container, Row, Col } from "reactstrap";
import { observer, inject } from "mobx-react";
import Waypoint from "react-waypoint";

@inject("styleStore")
@observer
export class Questions extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      entered: false
    };
  }
  componentDidMount() {
    window.scrollTo(0, 0);
  }

  setWaypointEnter() {
    // Set waypoint state
    this.setState({ entered: true });
    // Use updated state for UI waypoints animation.
    if (this.state.entered) {
      this.props.styleStore.isArrowVisible("yes");
    }
  }

  render() {
    return (
        <QuestionsDiv id="questions">
          <Container>
            <Waypoint
              scrollableAncestor={window}
              onEnter={this.setWaypointEnter.bind(this)}
              fireOnRapidScroll={true}
              topOffset="40%"
            />
...

这是 MobX 商店:

import { observable, action } from "mobx";

class StyleStore {
  @observable nextLink;
  @observable arrowVisibile;

  @action
    isArrowVisibile(visibility) {
    this.arrowVisibile = visibility;
    console.log(this.arrowVisibile);
  }
}

export default StyleStore;

和 index.js 加载提供程序:

import App from "./App";
import { BrowserRouter } from "react-router-dom";
import { Provider } from "mobx-react";
import StyleStore from "./stores/styleStore";
import registerServiceWorker from "./registerServiceWorker";

const stores = {
  styleStore: new StyleStore()
};

ReactDOM.render(
  <BrowserRouter>
    <Provider {...stores}>
      <App />
    </Provider>
  </BrowserRouter>,

  document.getElementById("root")
);
registerServiceWorker();

我也在使用react-app-rewire-mobx所以 .babelrc 看起来像这样:

{
  "presets": ["mobx"]
}

我在这里错过了什么会导致这个错误?另一个 MobX 操作 ChangeNextLink 以编码方式工作。

supra28

问题似乎在这里

 this.props.styleStore.arrowVisible();

arrowVisible 是一个可观察的属性而不是一个动作,你可能想调用

 this.props.styleStore.isArrowVisible();

您的商店也有拼写错误

@action
    isArrowVisibile(visibility)

应该

@action
    isArrowVisible(visibility)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

react + mobx 示例 尝试导入错误:“useObservable”未从“mobx-react-lite”导出

为什么 mobX 操作不会触发 React 组件的重新渲染

为什么我对(mobx)extendObservable的调用未触发重新渲染?

尝试在MST(Mobx状态树)操作中创建Firebase用户

尝试删除子层会导致以 NSException 类型的未捕获异常终止

React + Mobx:不触发渲染

尝试使用mobX替换setState

即使尝试出错也不会触发捕获

尝试尝试后未触发AngularJS ng-click

尝试在React-Native中使用MOBX

MobX 未正确更新组件

Mobx 与 TypeScript 不兼容的类型错误

如何使用 MobX、mobx-react-lite 触发像 setState 这样的状态?

Flutter MobX Observer不会在@action上触发

我该如何解决Firebase + React应用中的Mobx操作出现的“未捕获的TypeError:无法读取null的属性'0'”错误

尝试捕获块中未捕获的错误

错误未捕获尝试捕获路由级别

AsyncTask在尝试获取令牌时触发错误消息

尝试创建触发器但出现错误PLS-00103

MobX'this'在setter操作中未定义

Mobx可观察阵列未更新

Mobx未观察到阵列拼接

尝试将事件从组件触发到其祖父母时未触发事件

尝试与接收语句中的typedef值匹配会导致出现“错误的节点类型44”错误消息

我可以尝试/捕获Entity Framework中的SQL Server触发器错误

尝试通过触发器(插入时)插入多行会导致错误

当我尝试在我的 React 应用程序上使用 mobx 工具时,不支持实验性语法“decorators-legacy”并显示错误

在尝试安装tomcat之后,在apt-get操作上执行insserv会导致很多错误

尝试修改OpenCV轮廓会导致错误