NervJS / taro

开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/
https://docs.taro.zone/
Other
35.56k stars 4.79k forks source link

bind传递多个参数错误 #1059

Closed lanxiaoxing closed 5 years ago

lanxiaoxing commented 5 years ago

问题描述 父组件个子组件传递 onClick 函数,子组件传参给父组件时,只传一个参数没问题,传多个参数出问题

复现步骤 image image image

可以看到,在传入多个参数时,输出结果不对

系统信息

luckyadam commented 5 years ago

没有复现呀,能否提供下可以复现的代码

lanxiaoxing commented 5 years ago

@luckyadam 又测试了多次,还是有这个问题 子组件代码:

import {
  View} from '@tarojs/components'
import Taro from '@tarojs/taro'

class ShowCase extends Taro.Component {

  static defaultProps = {
    data: {
      goodsList: [
        {
          id: 11,
          status: 13
        },
        {
          id: 12,
          status: 14
        }
      ],
    },
    onClick: null
  }

  render() {
    return (      
      <View>
        {this.props.data.goodsList.map((item, index) => {
          return (
            <View key={index} className='goods-item'onClick={this.props.onClick.bind(this, 1, 2)} >点我</View>
          )
        })}
      </View>
    )
  }
}

export default ShowCase

父组件代码:

import {
  View} from '@tarojs/components'
import Taro from '@tarojs/taro'
import withWeapp from '@tarojs/with-weapp'

import ShowCase from '../../components/showcase';

@withWeapp('Page')
export default class Shop extends Taro.Component {
  state = {

  }

  componentWillMount() {

  }

  toDetail = (id, status, e) => {
    e.preventDefault()
    console.log(id)
    console.log(status)
  }

  render() {
    return (
      <View className='container'>
        <ShowCase onClick={this.toDetail} />
      </View>
    )
  }
}

效果: image

luckyadam commented 5 years ago

我还是没复现~ image

taro-bot[bot] commented 5 years ago

Hello~

您的问题我们无法复现。如果有空的话还请拔冗提供一个简单的复现 demo,否则这个 issue 将在 15 天后被自动关闭。

如果您在这 15 天中更新更多信息自动关闭的流程会自动取消,如有其他问题也可以发起新的 Issue。

Good luck and happy coding~