Thi*_*ebe 2 javascript dictionary settimeout reactjs
我想在一段时间后渲染我的ChatBubble组件.但它不会返回我的组件.相反,它将数字2和3作为字符串返回.
const Conversation = ({data}) => {
const { messages } = data;
return (
<div>
{
messages.map(data => {
return setTimeout(() => {
return <ChatBubble key={uniqid()} data={data}/>
}, data.delay);
})
}
</div>
);
}
export default Conversation;
Run Code Online (Sandbox Code Playgroud)
原因setTimeout返回计时器的ID.你不能只是回复一些东西做出反应并期待一些魔法发生.相反,你可能需要像这样的有状态的组合:
class Conversation extends React.Component {
constructor(props) {
super(props);
this.state = { messages: [] };
}
render() {
return this.state.messages.map(data => (<ChatBubble {...data} />));
}
componentDidMount() {
const {messages, delay} = this.props.data;
this.interval = setInterval(() => {
this.setState(prev => ({ messages: prev.messages.concat(messages.shift()) }));
if(!messages.length) clearInterval(this.interval);
}, delay);
}
componentWillUnmount() {
clearInterval(this.interval);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1723 次 |
| 最近记录: |