首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用一个函数在不同的文件中作出反应?

如何使用一个函数在不同的文件中作出反应?
EN

Stack Overflow用户
提问于 2018-12-06 10:13:50
回答 2查看 37关注 0票数 1

我正在尝试使用一个函数,它位于与App.js不同的组件中。我有语法错误,我不知道我做错了什么。我在App.js中有一个按钮,当我单击它时,我前面提到的另一个组件中的函数应该会触发。

app.js

代码语言:javascript
复制
import React from 'react';
import {shaking} from './components/Tree/Tree.js';

class App extends React.Component {
    constructor() {
        super();
        this.handleClick = this.handleClick.bind(this);
    }

    handleClick() {
        shaking();
        console.log("done !");
    }

    render() {
        return (
            <div>
                <Tree className='tree' />
                <Apples />
                <Basket />
                <br/>
                <button className="start-btn" onClick={this.handleClick}>Start !</button>
                <br/>
            </div>
        );
    }
};

export default App;

这是我的另一个组件

代码语言:javascript
复制
import React from 'react';
import TreeSvg from './Tree-svg/TreeSvg.js';
import './Tree.sass';

export  function shaking(){
    const tree = document.getElemenetsByClassName(".tree-img")[0];
    tree.classList.add("apply-shake");
    console.log('shaked!');
}

class Tree extends React.Component{
    constructor() {
    super();
        this.shaking = this.shaking.bind(this);
    }

    shaking() {
        this.setState({shaked:'1'});
        const tree = document.getElemenetByClassName(".tree-img");
        tree.classList.add("apply-shake");
        console.log('shaked!');
    }

    render(){
        return(
            <div className="tree-img">
            <TreeSvg />
            </div>
        );
    }
};

export default Tree;
EN

回答 2

Stack Overflow用户

发布于 2018-12-06 11:34:27

让你的树组件像这样

代码语言:javascript
复制
import React from 'react';
import TreeSvg from './Tree-svg/TreeSvg.js';
import './Tree.sass';

export  function shaking(){
    const tree = document.getElementsByClassName(".tree-img")[0];
    tree.classList.add("apply-shake");
    console.log('shaked!');
}



class Tree extends React.Component{
    constructor() {
    super();
    this.state = {
        shaked : ''
    }
shaking() {
    this.setState({shaked:'1'});
    const tree = document.getElementByClassName(".tree-img");
    tree.classList.add("apply-shake");
    console.log('shaked!');
    }
render(){
return(
    <div className="tree-img">
    <TreeSvg />
    </div>
 );
}
};


export default Tree;
票数 0
EN

Stack Overflow用户

发布于 2018-12-06 11:56:35

您的代码中确实有两个语法错误。两者都位于Tree组件文件中。

  1. 在导出函数(第6行):const tree = document.getElemenetsByClassName(".tree-img")[0];Elemenets替换为Elements
  2. 在类方法shaking() (第21行):const tree = document.getElemenetByClassName(".tree-img");Elemenet替换为Element
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53649008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档