【问题标题】:function call. Function cannot be called on possibly undefined value函数调用。无法对可能未定义的值调用函数
【发布时间】:2017-07-15 17:10:48
【问题描述】:

我有以下反应组件

//@flow

import React from 'react';
import { connect } from 'react-redux';
import { submit } from 'redux-form';
import { Button } from 'ds-component-library';
import styles from './ApplicationLayout.scss';
import cs from 'classnames';

const RemoteSubmitButton = ({
  dispatch,
  form
}: {
  dispatch: void,
  form: string
}) =>
  <Button
    primary
    className={cs(styles['button-next'])}
    onClick={() => dispatch(submit(form))}
  >
    Next
  </Button>;

RemoteSubmitButton.displayName = 'RemoteSubmit';

export default connect()(RemoteSubmitButton);

运行流程时出现以下错误:

onClick={() => dispatch(submit(form))}
                        ^^^^^^^^^^^^^^^^^^^^^^ function call. Function cannot be called on possibly undefined value
onClick={() => dispatch(submit(form))}
                        ^^^^^^^^ undefined

【问题讨论】:

    标签: reactjs flowtype


    【解决方案1】:

    解释器对您在解构时将调度的类型定义为 void 这一事实不满意,它假定它可能未定义,但是,您总是在单击按钮时调用该函数。

    一种可能的解决方案可能是提取对函数的调度调用,并首先检查调度是否未定义。

    【讨论】:

      【解决方案2】:

      如果我正确理解错误消息,问题可能是调用submit(form) 可能会返回undefined,这会导致问题,因为dispatch 函数需要使用一个未定义的参数调用。

      要么submit的注解有误,要么在传递给dispatch之前需要检查它的返回值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-08
        • 1970-01-01
        相关资源
        最近更新 更多