将createElement()类的react函数内部的类元素节点作为目标

时间:2017-02-24 02:24:16

标签: javascript reactjs

我想在React.createElement()函数中获取函数的当前节点。

return React.createClass({
            getInitialState: function() {
                return ({
                    expand: false
                });
            },
            expandLaunch: function() {
               this.setState({
                   expand: true
               });
               // want to do something like 
               // $('.text').css('display','block');
            },
            render: function() {
                var titlebar = React.createElement(
                    'div',
                    {className: 'titlebar', onClick: this.expandLaunch},
                    'Launcher'
                );
                //........
                var text = React.createElement(
                    'div',
                    {className: 'text'},
                    textarea
                );
                return React.createElement(
                        'div',
                        {className: 'box-wrapper'},
                        titlebar,
                        text
                );
            }
        });

所以使用expandLaunch()函数我想要定位元素,以便我可以操作css和其他可能的功能。仅供参考我不使用JSX,只是常规的jQuery。

1 个答案:

答案 0 :(得分:1)

使用ref

return React.createClass({
        getInitialState: function() {
            return ({
                expand: false
            });
        },
        expandLaunch: function() {
           this.setState({
               expand: true
           });
           $(this.refs.text).css('display','block');
        },
        render: function() {
            var titlebar = React.createElement(
                'div',
                {className: 'titlebar', onClick: this.expandLaunch},
                'Launcher'
            );
            //........
            var text = React.createElement(
                'div',
                {className: 'text', ref: 'text'},
                textarea
            );
            return React.createElement(
                    'div',
                    {className: 'box-wrapper'},
                    titlebar,
                    text
            );
        }
    });

我确实建议您使用React为您提供的工具,通过动态className或内联样式,而不是使用jquery,在许多方面应该将其视为与React正交。