Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Reactjs中的渲染中单击onClicked_Reactjs - Fatal编程技术网

在Reactjs中的渲染中单击onClicked

在Reactjs中的渲染中单击onClicked,reactjs,Reactjs,所以我正在进行API调用。 我试图将“question\u id”放在元素的id中,其中有className=“disessionspan”,并希望在单击该元素后获得id。 我试着在前面放几个字符的id,这给了我一个错误,如果我把onClick={this.likeQuestion(this,this.state.questioninfo.questionid)}onClick已经在没有问题id的情况下控制台日志了。在Reactjs中又是新的 我希望我说清楚了。我想在onClick上安慰问题id

所以我正在进行API调用。 我试图将
“question\u id”
放在元素的id中,其中有
className=“disessionspan”
,并希望在单击该元素后获得id。 我试着在前面放几个字符的id,这给了我一个错误,如果我把
onClick={this.likeQuestion(this,this.state.questioninfo.questionid)}
onClick已经在没有问题id的情况下控制台日志了。在Reactjs中又是新的 我希望我说清楚了。我想在onClick上安慰问题id

所以当我运行这个。 未单击onClick函数,并且已显示控制台日志 我看控制台已经输出了

 - 2 this is clicked 
 - 2 this is clicked 
 - 6 this is clicked
这是我的json响应。总共有10项

     {
  "total_Item": 10,
  "time": "2016-12-19 16:43:23.260274",
  "Items": [
    {
      "question_url": "i-am-really-looking-fwd-to-some-new-christmas-gifts-!-when-will-they-be-added-to-the-site-724",
      "likes": 2,
      "time": "2016-11-17 03:02:36",
      "replies": [
        {
          "user_name": "Vicky",
          "message": "ihope they are added by next week?",
          "reply_id": 1650,
          "time": "2016-12-09 07:53:22"
        },
        {
          "user_name": "Siddharth Hembrom",
          "message": "test",
          "reply_id": 1670,
          "time": "2016-12-14 07:15:08"
        }
      ],
      "total_replies": 2,
      "location_url": "http://www.giftzapp.com/gifts/",
      "user_name": "Vicky",
      "message": "I am really looking fwd to some new christmas gifts ! When will they be added to the site?",
      "question_id": 724

}

export default class Question extends React.Component {
  constructor(props){
    super(props);
    this.toggle = this.toggle.bind(this);
    this.state = {
        pageNo : 1,
        dropdownOpen: false,
        questioninfo : [],
        questionItem: []
      }
  }
  componentWillMount(){
    var url = url;
    Request.get(url)
             .then((response) => {
              this.setState({
                questioninfo: response.body,
                questionItem: response.body.Items
              })
            })
  }



  toggle = () => {
    this.setState({
      dropdownOpen: !this.state.dropdownOpen
    });
  }

  likeQuestion = (e) => {
      console.log('this is clicked');
      //But this is not working
   }

  render() {
      var totalPage = this.state.questioninfo.total_pages;
      var currentPage = this.state.questioninfo.current_page;


      var pgrow = [];

      for (var i = 1; i < totalPage; i++) {
          pgrow.push(<DropdownItem  onClick={this.gotoPage.bind(this, i)} key={i}>{i}</DropdownItem>);
      }
         //console.log("filter work in progress "+this.state.questioninfo.data);
        var canvases = this.state.questionItem.map(function(data,i) {
            var qid = data.question_id;
          var firstLtr = data.user_name.charAt(0);
{

            return (
               <div key={i}>
                     <Col sm="12" md={{ size: 12, offset: 2 }} className="questionCard">
                      <Card block>
                        <CardTitle>
                                    <div className="outerCircle"><span>{firstLtr}</span></div> {data.user_name}
                                    <i className="fa fa-flag-o flagging" aria-hidden="true"></i>
                                    <a href={data.location_url} target="_blank" className="questionLocation">{data.location_url}</a>
                        </CardTitle>
                        <CardText className="questionTxt">{data.message}</CardText>
                        <div>
                              <Button className="replyBtn">
                                <Link to={`questionReply/${data.question_id}/${data.question_url}`}>
                                  {data.total_replies} Discussions
                                </Link>
                              </Button>
                             <Button size="sm" color="link" className="disussionSpan" id="likeQues{this.state.questioninfo.question_id}" onClick={this.likeQuestion(this,this.state.questioninfo.question_id)}>{data.likes} Likes</Button>
                        </div>
                      </Card>
                    </Col>
               </div>
            );
          }

       },this);
{
“总计项目”:10,
“时间”:“2016-12-19 16:43:23.260274”,
“项目”:[
{
“问题url”:“我真的很期待新的圣诞礼物”!-when-will-they-be-added-to-the-site-724”,
“喜欢”:2,
“时间”:“2016-11-17 03:02:36”,
“答复”:[
{
“用户名”:“Vicky”,
“消息”:“我希望在下周之前添加?”,
“答复id”:1650,
“时间”:“2016-12-09 07:53:22”
},
{
“用户名”:“Siddharth Hembrom”,
“消息”:“测试”,
“答复id”:1670,
“时间”:“2016-12-14 07:15:08”
}
],
“答复总数”:2,
“位置\ url”:http://www.giftzapp.com/gifts/",
“用户名”:“Vicky”,
“信息”:“我真的在寻找一些新的圣诞礼物!它们什么时候会被添加到网站?”,
“问题编号”:724
}
导出默认类问题扩展React.Component{
建造师(道具){
超级(道具);
this.toggle=this.toggle.bind(this);
此.state={
页码:1,
dropdownOpen:false,
问题信息:[],
问题项目:[]
}
}
组件willmount(){
var url=url;
Request.get(url)
。然后((响应)=>{
这是我的国家({
问题信息:response.body,
问题项:response.body.Items
})
})
}
切换=()=>{
这是我的国家({
dropdownOpen:!this.state.dropdownOpen
});
}
likeQuestion=(e)=>{
log('单击此项');
//但这是行不通的
}
render(){
var totalPage=this.state.questioninfo.total\u页面;
var currentPage=this.state.questioninfo.current\u页面;
var pgrow=[];
对于(变量i=1;i
使用bind发送参数

onClick={this.likeQuestion.bind(this,this.state.questioninfo.question_id)}
然后功能应该是

likeQuestion = (value, e) => {
      console.log('this is clicked');
      //But this is not working
   }

如果不绑定,则在元素呈现时将执行所写的任何内容,因此即使未单击“绑定”发送参数,也会看到输出

onClick={this.likeQuestion.bind(this,this.state.questioninfo.question_id)}
然后功能应该是

likeQuestion = (value, e) => {
      console.log('this is clicked');
      //But this is not working
   }

如果不绑定,则在元素呈现时将执行您编写的任何内容,因此即使不单击,也会看到输出。您可以尝试使用ES6绑定方式

使用箭头功能:

return (
  <th value={column} onClick={() => this.likeQuestion(column)}>{column}</th>
);
返回(
this.likeQuestion(column)}>{column}
);
或者,如果您想使用ES5,那么也需要绑定到构造函数中

return (
  <th value={column} onClick={that.likeQuestion.bind(that, column)}>{column}</th>
);
返回(
{column}
);

您可以尝试使用ES6绑定方式

使用箭头功能:

return (
  <th value={column} onClick={() => this.likeQuestion(column)}>{column}</th>
);
返回(
this.likeQuestion(column)}>{column}
);
或者,如果您想使用ES5,那么也需要绑定到构造函数中

return (
  <th value={column} onClick={that.likeQuestion.bind(that, column)}>{column}</th>
);
返回(
{column}
);
试试这个:

onClick={this.likeQuestion.bind(this,this.state.questioninfo.question_id)}

likeQuestion(a,b,c){
   console.log(a,b,c);
}
检查a、b、c值。

尝试以下方法:

onClick={this.likeQuestion.bind(this,this.state.questioninfo.question_id)}

likeQuestion(a,b,c){
   console.log(a,b,c);
}

检查a、b、c值。

它直接注销的原因是您实际上是在渲染时调用函数

onClick={this.likeQuestion.bind(this,this.state.questioninfo.question_id)}
您可以通过更改likeQuestion方法使其返回函数来解决此问题:

likeQuestion(id, e) {
  return () => {
    console.log('this is clicked', id);
  }
}

它直接注销的原因是因为您实际上是在render上调用函数

onClick={this.likeQuestion.bind(this,this.state.questioninfo.question_id)}
您可以通过更改likeQuestion方法使其返回函数来解决此问题:

likeQuestion(id, e) {
  return () => {
    console.log('this is clicked', id);
  }
}

这不是问题。OP已经绑定了map函数。@绑定map函数将使map函数可以使用它,因此您可以像这样访问likeQuestion.likeQuestion,但您仍然需要绑定onClick事件以及函数参数console.log(值“this is clicked”)应该这样做这给了一堆对象,但我找不到问题_我认为顺序应该重新排序尝试likeQuestion=(e,value)=>{console.log(value);}这不是问题。OP已经绑定了map函数。@绑定map函数将使map函数可以使用它,因此您可以像这样访问likeQuestion.likeQuestion,但您仍然需要绑定onClick事件以及函数参数console.log(值“this is clicked”)应该这样做这给了一堆对象,但我找不到问题_我认为应该重新排序尝试likeQuestion=(e,value)=>{console.log(value);}这是单击的[object object]