我有以下反应组件
//@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);
运行flow时出现以下错误:
onClick={() => dispatch(submit(form))}
^^^^^^^^^^^^^^^^^^^^^^ function call. Function cannot be called on possibly undefined value
onClick={() => dispatch(submit(form))}
^^^^^^^^ undefined
答案 0 :(得分:1)
解释器对于在解构时将dispatch的类型定义为无效这一事实感到不满意,它假定它可能未定义,但是,当单击该按钮时,您总是调用该函数。 / p>
一种可能的解决方案可能是提取对函数的调度调用,并检查调度是否未首先定义。
答案 1 :(得分:0)
如果我正确理解了错误消息,问题可能是调用submit(form)
可能会返回undefined
并且这会导致问题,因为dispatch
函数需要调用一个非未定义的论点。
submit
的注释都是错误的,或者您需要先检查其返回值,然后再将其传递给dispatch
。