Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

往子组件传参,类型为函数,子组件调用 this.props.onXXX 无效。run dev 是正常的,run build 则有此问题。 #1347

Closed
zoux opened this issue Dec 3, 2018 · 4 comments
Assignees

Comments

@zoux
Copy link
Contributor

zoux commented Dec 3, 2018

问题描述
往子组件传参,类型为函数,子组件调用 this.props.onXXX 无效。run dev 是正常的,run build 则有此问题。

复现步骤
[复现问题的步骤]
父组件:

onClickMembershipCard = (item): void => {
console.log('log') // 这一段不执行,说明函数未执行,没进来
const { cardStatus, custCardId }: any = item
const routeMap = new Map<string, string>()
.set('1', 'membershipCard')
.set('2', 'activation')
routerChange('navigateTo', routeMap.get(cardStatus) as string, { custCardId })
}

<MembershipCard size='small' type='rights' map={item} onClickHandler={this.onClickMembershipCard} />

子组件:
onClick = (): void => {
console.log('click') // 这一句执行了,根据 onClickMembershipCard 的表现,推测以下函数未执行
this.props.onClickHandler && this.props.onClickHandler(this.props.map)
}

<View onClick={this.onClick}>

期望行为

子组件能成功触发父组件传参进来的函数

报错信息

系统信息

  • 操作系统: Windows 10
  • Taro 版本 1.18
  • Node.js 版本 8.11.2
  • 报错平台 weapp

补充信息

run dev 的包是正常的,run build 的则不行。

@taro-bot
Copy link

taro-bot bot commented Dec 3, 2018

欢迎提交 Issue~

如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏

如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。

Good luck and happy coding~

@taro-bot
Copy link

taro-bot bot commented Dec 3, 2018

CC @luckyadam

@zoux
Copy link
Contributor Author

zoux commented Dec 4, 2018

昨天试验了一下,同样是 run build,如果更改了子组件 props 的 interface 中 onClickHandler 为非必填(onClickHandler?: (item) => void)则会出现该问题;若为必填 (onClickHandler: (item) => void) 则不会出现该问题。

暂不确认问题是不是出在这里,但确实更改是否必填结合开篇所述的代码出现了此问题。

PS 除了提了 iisue,昨天在微信群也跟 @隔壁老李 提及了该问题~

@zoux
Copy link
Contributor Author

zoux commented Dec 5, 2018

解决了问题,应该不是由 ts 导致的,而是 webpack 打包时的环境变量。

之前用 cross-env 自定义了 NODE_ENV=test 后 build 的包出现了这种错误;
现在改为 NODE_ENV=test 后 build 的包就正常了~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants