在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ react ,render 問題。無法渲染數(shù)據(jù)

react ,render 問題。無法渲染數(shù)據(jù)

  1. 數(shù)據(jù)是拿得到的,可以打印renderSelect,但是下面就沒法渲染. <p>{selectData}</p>這個(gè)都無法渲染?為什么?如何解決
    render(){
        const {dispatch}=this.props;
        const selectData=this.state.selectData
        console.log("renderSelect",selectData)
        const body=(
            <div className="form-group">
                <p>{selectData}</p>
                <label>文件名稱</label>
                {/*<input className="form-control" name="newFileName"/>*/}

                <select name="selectFile" id="">
                    <option value="">數(shù)據(jù)源1</option>
                    <option value="">數(shù)據(jù)源2</option>
                    {
                        this.state.selectData.map((item,index)=>{
                            return (
                                <option value={item.id} key={index}>{item.datasourceName}</option>
                            )
                        })
                    }
                </select>
            </div>
        );
        const buttons=[
            {
                name:'保存',
                className:'btn btn-success',
                icon:'fa fa-floppy-o',
                click:function () {
                    $(ReactDOM.findDOMNode(this)).data('bootstrapValidator').validate();
                    const isValid=$(ReactDOM.findDOMNode(this)).data('bootstrapValidator').isValid();
                    if(!isValid){
                        return;
                    }
                    componentEvent.eventEmitter.emit(componentEvent.SHOW_LOADING);
                    const newFileName=document.getElementsByName('newFileName')[0].value,{fileType,nodeData}=this.state;
                    setTimeout(function () {
                        dispatch(action.createNewFile(newFileName,fileType,nodeData));
                    },200);

                }.bind(this)
            }
        ];
        return (
            <Dialog title='' body={body} buttons={buttons}/>
        );
    }

dialog.jsx 文件

import React,{Component,PropTypes} from 'react';
import * as event from '../../../frame/event.js';
import ReactDOM from 'react-dom';

export default class Dialog extends Component{
    constructor(props){
        super(props);
        this.state={title:this.props.title || '',buttons:this.props.buttons || [],body:this.props.body || []};
    }
    componentDidMount(){
        event.eventEmitter.on(event.OPEN_DIALOG,(data)=>{
            const title=data.title || this.state.title;
            const body=data.body || this.state.body;
            const buttons=data.buttons || this.state.buttons;
            const init=data.init,destroy=data.destroy;
            this.setState({title,body,buttons,init,destroy});
            $(ReactDOM.findDOMNode(this)).modal('show');
        });
        event.eventEmitter.on(event.CLOSE_DIALOG,()=>{
            $(ReactDOM.findDOMNode(this)).modal('hide');
        });
        event.eventEmitter.on(event.DIALOG_CONTNET_CHANGE,(data)=>{
            const title=data.title || this.state.title;
            const body=data.body || this.state.body;
            const buttons=data.buttons || this.state.buttons;
            this.setState({title,body,buttons});
        });
    }
    componentWillUnmount(){
        event.eventEmitter.removeAllListeners(event.OPEN_DIALOG);
        event.eventEmitter.removeAllListeners(event.CLOSE_DIALOG);
    }
    componentDidUpdate(){
        const init=this.state.init;
        if(init){
            init(this.props.dispatch);
        }
    }
    componentWillUpdate(){
        const destroy=this.state.destroy;
        if(destroy){
            destroy();
        }
    }
    render(){
        const buttons=[];
        this.state.buttons.forEach((btn,index)=>{
            buttons.push(<button type="button" key={index} className={btn.className} onClick={(e)=>{
                btn.click(this.props.dispatch);
            }}><i className={btn.icon}></i> {btn.name}</button>)
        });
        return (
            <div className="modal fade" tabIndex="-1" role="dialog" aria-hidden="true">
                <div className="modal-dialog">
                    <div className="modal-content">
                        <div className="modal-header">
                            <button type="button" className="close" data-dismiss="modal" aria-hidden="true">
                                &times;
                            </button>
                            <h4 className="modal-title" id="myModalLabel">
                                {this.state.title}
                            </h4>
                        </div>
                        <div className="modal-body">

                            {this.state.body}
                        </div>
                        <div className="modal-footer">
                            {buttons}
                        </div>
                    </div>
                </div>
            </div>
        );
    }
};

打印body 是這么個(gè)對(duì)象?

圖片描述


我改了下 body中都支持運(yùn)算的,但是我傳入變量類型是對(duì)象的時(shí)候就是空?為什么

        const body=(
            <div className="form-group">
                <p>{1+1}</p>
                <p>{selectData}</p>
                <select name="selectFile" id="">
                    <option value="">數(shù)據(jù)源1</option>
                    <option value="">數(shù)據(jù)源2</option>
                    {listStr}
                    {selectData.map((l) => (<option key={l.id} value={l.id}>{l.datasourceName}</option>))}
                </select>
            </div>
        );

圖片描述

回答
編輯回答
安于心

沒發(fā)現(xiàn)什么問題。
你在Dailog組件中將body打印出來看看是什么?

2017年9月26日 14:40