代码之家  ›  专栏  ›  技术社区  ›  strumpy_strudel

不呈现组件onClick

  •  1
  • strumpy_strudel  · 技术社区  · 7 年前

    我尝试渲染的组件:

    import React, { Component } from 'react';
    
    export default class QueryPrint extends Component {
    
        render() {
            console.log('working');
    
            return (
                <div>Hello</div>
            )
        }
    

    }

    尝试调用它的组件:

    import React, { Component } from 'react';
    import { connect } from 'react-redux';
    
    import {
        Button,
    
    } from 'reactstrap';
    
    import QueryPrint from './bq_print';
    
    class QueryResults extends Component {
        constructor(props) {
            super(props);
            this.print = this.print.bind(this);
        }
    
        print() {
            console.log('Clicked');
            return (
                <QueryPrint />
            );
        }
    
        render() {
            return (
                <Button 
                    className='cuts-btn' 
                    color='success' 
                    onClick={this.print}
                >
                    Print
                </Button>
            )
        }
    }
    
    function mapStateToProps(state) {
        return {
            query_data: state.results.query_data
        }
    }
    
    export default connect (mapStateToProps, null)(QueryResults);
    

    console.log('clicked') 正在工作,但是应该在该方法中呈现的组件没有——没有 console.log('working') <div> .

    2 回复  |  直到 7 年前
        1
  •  2
  •   Nicholas Tower    7 年前

    从单击回调返回的内容无效。如果要渲染某个对象,请在render方法中执行此操作。click回调的任务是调用this.setState(),然后它将启动渲染。

    也许是这样的:

    class QueryResults extends Component {
      constructor(props) {
        super(props);
        this.print = this.print.bind(this);
        this.state = {
          queryPrint: false,
        }
      }
    
      print() {
        console.log('Clicked');
        this.setState({ queryPrint: true })
      }
    
      render() {
        const { queryPrint } = this.state;
        return (
          <React.Fragment>
            {queryPrint && <QueryPrint />}
            <Button 
              className='cuts-btn' 
              color='success' 
              onClick={this.print}
            >
              Print
            </Button>
          </React.Fragment>
        )
      }
    }
    
        2
  •  0
  •   Deian    7 年前

    反应不同。它更像是一个web应用程序-您需要导航到另一个组件。

    看看这个例子,它非常切题: https://facebook.github.io/react-native/docs/navigation

    或者,如果只想对屏幕进行部分更改,则需要将其包含到自己的渲染中,并通过标志或状态机对其进行控制。

    https://facebook.github.io/react-native/docs/direct-manipulation