Reactjs 如何使用setTimeout运行map函数?

Reactjs 如何使用setTimeout运行map函数?,reactjs,settimeout,map-function,Reactjs,Settimeout,Map Function,我需要运行带有setTimeout的map函数,以在渲染函数之后延迟2000ms 我使用了setTimeout(#########,2000),但它不起作用。 延迟渲染函数中某些内容的最佳方法是什么? 在reactJs中渲染时如何使用setTimeout import React,{Component} from "react"; import TypeMessage from './typeMessage'; import {connect} from "react-redux"; cla

我需要运行带有setTimeout的map函数,以在渲染函数之后延迟2000ms

我使用了setTimeout(#########,2000),但它不起作用。 延迟渲染函数中某些内容的最佳方法是什么? 在reactJs中渲染时如何使用setTimeout

import React,{Component} from "react";
import TypeMessage from './typeMessage';
import {connect} from "react-redux";

 class MainContent extends Component{
     constructor(props){
         super(props);
         this.state={
             count:0,
             questions:[]
         }
     }

    addMessage=(message)=>{

        console.log( "inputtan gelen message",message);
        message.keyId = Math.random();
        this.props.dispatch({type:"SAVE_MESSAGE",typeMessage:message});

    }


    moreCount=()=>{
        console.log("more count tıklandı");
        this.setState(prevState=>({
            count:prevState.count+1
        }));
    }

    _nextQuestion=()=>{
        this.setState(prevState=>({
            count:prevState.count+1
        }));


        Object.entries(this.props.saveFormQuestions).map(([key, value], i) => {

                //if(key===this.state.count.toString() && value.type==='control_fullname'){
                    return (
                        this.setState(prevState=>({
                            questions:prevState.questions.concat(value)
                        }))

                    );
            })
    }



render(){
    let sendSomething="Main contentten type message'e mesaj gönderildi";
    return(
        <div className="mainContainer">
            <h3 className="text-center">Jotform ChatBot</h3>
        <div className="messaging">
            <div className="inbox_msg">

                <div className="mesgs">
                    {
                        //////////MESSAGE FIELD////////////////*\
                    }

                    <div className="msg_history">
                        <div className="outgoing_msg">
                        <div className="outgoing_msg_img"> <img src="jot_pencil.png"
                                    alt="pencil"/>
                            </div>
                            <div className="sent_msg">
                                <p>
                                    How Can I help you? Would you like to fullfill the form?
                                    <input type="button"value="Yes" onClick={this._nextQuestion}/>
                                    <input type="button"value="No"/>
                                    </p>
                                <span className="time_date"> 11:01 AM | June 9</span>
                            </div>
                        </div>
                        {
                          /* I need to delay this area  */
                            setTimeout(
                            this.state.questions.map(item=>{

                                if(item.type==='control_fullname' && item.order===this.state.count.toString()){
                                    return(
                                        <div className="incoming_msg" key={item.qid}>
                                            <div className="incoming_msg_img"> <img src="https://ptetutorials.com/images/user-profile.png"
                                                    alt="sunil"/>
                                            </div>
                                            <div className="received_msg">
                                                <div className="received_withd_msg">
                                                    <p>{item.type}</p>
                                                    <p>

                                                    </p>
                                                    <span className="time_date"> 11:01 AM | June 9</span>
                                                </div>
                                            </div>
                                        </div>
                                    )}else{
                                        return(<div style={{display:'none'}}>We dont find any questions in your form</div>);
                                    }


                            }),2000)
                        }        
                         {
                            //User sent messages

                            this.props.saveMessage.map(message=>{
                                return (
                                <div className="incoming_msg" key={message.keyId}>
                                <div className="incoming_msg_img"> <img src="https://ptetutorials.com/images/user-profile.png"
                                        alt="sunil" />
                                </div>
                                <div className="received_msg">
                                    <div className="received_withd_msg">
                                    <p>Your answer.</p>
                                        <p>
                                            {message.content}
                                        </p>
                                        <span className="time_date"> 11:04 AM | June 9</span>
                                    </div>
                                </div>
                            </div>);
                            })
                        }

                    </div>

                    <TypeMessage message={sendSomething} addMessage={this.addMessage} moreCount={this.moreCount}/>

                    {
                        //////////MESSAGE FIELD////////////////*\
                    }
                </div>
            </div>
        </div>
        </div>
        );
        }
}
const mapStateToProps=state=>({
    formId:state.formId,
    apiKey:state.apiKey,
    saveMessage:state.saveMessage,
    saveFormQuestions:state.saveFormQuestions
})

export default connect(mapStateToProps)(MainContent);
# 重画 我需要运行带有setTimeout的map函数,以在渲染函数之后延迟2000ms

我使用了setTimeout(#########,2000),但它不起作用。 延迟渲染函数中某些内容的最佳方法是什么? 在reactJs中渲染时如何使用setTimeout

import React,{Component} from "react";
import TypeMessage from './typeMessage';
import {connect} from "react-redux";

 class MainContent extends Component{
     constructor(props){
         super(props);
         this.state={
             count:0,
             questions:[]
         }
     }

    addMessage=(message)=>{

        console.log( "inputtan gelen message",message);
        message.keyId = Math.random();
        this.props.dispatch({type:"SAVE_MESSAGE",typeMessage:message});

    }


    moreCount=()=>{
        console.log("more count tıklandı");
        this.setState(prevState=>({
            count:prevState.count+1
        }));
    }

    _nextQuestion=()=>{
        this.setState(prevState=>({
            count:prevState.count+1
        }));


        Object.entries(this.props.saveFormQuestions).map(([key, value], i) => {

                //if(key===this.state.count.toString() && value.type==='control_fullname'){
                    return (
                        this.setState(prevState=>({
                            questions:prevState.questions.concat(value)
                        }))

                    );
            })
    }



render(){
    let sendSomething="Main contentten type message'e mesaj gönderildi";
    return(
        <div className="mainContainer">
            <h3 className="text-center">Jotform ChatBot</h3>
        <div className="messaging">
            <div className="inbox_msg">

                <div className="mesgs">
                    {
                        //////////MESSAGE FIELD////////////////*\
                    }

                    <div className="msg_history">
                        <div className="outgoing_msg">
                        <div className="outgoing_msg_img"> <img src="jot_pencil.png"
                                    alt="pencil"/>
                            </div>
                            <div className="sent_msg">
                                <p>
                                    How Can I help you? Would you like to fullfill the form?
                                    <input type="button"value="Yes" onClick={this._nextQuestion}/>
                                    <input type="button"value="No"/>
                                    </p>
                                <span className="time_date"> 11:01 AM | June 9</span>
                            </div>
                        </div>
                        {
                          /* I need to delay this area  */
                            setTimeout(
                            this.state.questions.map(item=>{

                                if(item.type==='control_fullname' && item.order===this.state.count.toString()){
                                    return(
                                        <div className="incoming_msg" key={item.qid}>
                                            <div className="incoming_msg_img"> <img src="https://ptetutorials.com/images/user-profile.png"
                                                    alt="sunil"/>
                                            </div>
                                            <div className="received_msg">
                                                <div className="received_withd_msg">
                                                    <p>{item.type}</p>
                                                    <p>

                                                    </p>
                                                    <span className="time_date"> 11:01 AM | June 9</span>
                                                </div>
                                            </div>
                                        </div>
                                    )}else{
                                        return(<div style={{display:'none'}}>We dont find any questions in your form</div>);
                                    }


                            }),2000)
                        }        
                         {
                            //User sent messages

                            this.props.saveMessage.map(message=>{
                                return (
                                <div className="incoming_msg" key={message.keyId}>
                                <div className="incoming_msg_img"> <img src="https://ptetutorials.com/images/user-profile.png"
                                        alt="sunil" />
                                </div>
                                <div className="received_msg">
                                    <div className="received_withd_msg">
                                    <p>Your answer.</p>
                                        <p>
                                            {message.content}
                                        </p>
                                        <span className="time_date"> 11:04 AM | June 9</span>
                                    </div>
                                </div>
                            </div>);
                            })
                        }

                    </div>

                    <TypeMessage message={sendSomething} addMessage={this.addMessage} moreCount={this.moreCount}/>

                    {
                        //////////MESSAGE FIELD////////////////*\
                    }
                </div>
            </div>
        </div>
        </div>
        );
        }
}
const mapStateToProps=state=>({
    formId:state.formId,
    apiKey:state.apiKey,
    saveMessage:state.saveMessage,
    saveFormQuestions:state.saveFormQuestions
})

export default connect(mapStateToProps)(MainContent);
import React,{Component}来自“React”;
从“./TypeMessage”导入TypeMessage;
从“react redux”导入{connect};
类MainContent扩展组件{
建造师(道具){
超级(道具);
这个州={
计数:0,
问题:[]
}
}
addMessage=(消息)=>{
console.log(“输入格伦消息”,消息);
message.keyId=Math.random();
this.props.dispatch({type:“SAVE_MESSAGE”,typeMessage:MESSAGE});
}
moreCount=()=>{
console.log(“更多计数tıklandı”);
this.setState(prevState=>({
计数:prevState。计数+1
}));
}
_下一个问题=()=>{
this.setState(prevState=>({
计数:prevState。计数+1
}));
Object.entries(this.props.saveFormQuestions).map([key,value],i)=>{
//if(key==this.state.count.toString()&&value.type===control\u fullname){
返回(
this.setState(prevState=>({
问题:prevState.questions.concat(值)
}))
);
})
}
render(){
让sendSomething=“Main contentten type message'e mesaj gönderildi”;
返回(
Jotform聊天机器人
{
//////////消息字段////////////////*\
}

我能为您效劳吗?您要填这张表吗?

6月9日上午11:01 { /*我需要推迟这个地区*/ 设置超时( this.state.questions.map(项=>{ if(item.type=='control\u fullname'&&item.order==this.state.count.toString()){ 返回( {item.type}

6月9日上午11:01 )}否则{ 返回(我们在您的表格中未发现任何问题); } }),2000) } { //用户发送的消息 this.props.saveMessage.map(message=>{ 返回( 你的回答

{message.content}

6月9日上午11:04 ); }) } { //////////消息字段////////////////*\ } ); } } 常量mapStateToProps=状态=>({ formId:state.formId, apiKey:state.apiKey, saveMessage:state.saveMessage, saveFormQuestions:state.saveFormQuestions }) 导出默认连接(MapStateTops)(主内容);
通常不建议尝试这样做;最好在该时间之后更新状态,并根据状态进行渲染更新。我也同意@OliverRadini。但是,此
map
函数位于组件中的何处?将映射放入承诺中,并在解析时设置超时?它通常不是advisa我们可以尝试这样做;最好在这段时间之后更新状态,并根据状态更新渲染。我也同意@OliverRadini。但是,这个
map
函数在组件中的位置在哪里?将映射放在一个承诺中,在解决时设置超时?