小编Ama*_*ira的帖子

对 socket.on() 回调的调度操作

所以基本上我得到了这个套接字,它工作正常,向我发送“新订单”消息。

我正在使用 redux,我想分派一个动作,而不是减速器会得到它并且我的商店会被更新。但这段代码没有做任何事情!

socket.on('new order', (order) => {    
    return (dispatch) => {
      dispatch(socketNewOrder(order));
    }
});
Run Code Online (Sandbox Code Playgroud)

这是我的操作,它位于同一个文件中:

export const socketNewOrder = (order) => {
  return {
    type: 'SOCKET_NEW_ORDER',
    payload: order
  }
}
Run Code Online (Sandbox Code Playgroud)

我也试着这样称呼我的行动:

socket.on('new order', (order) => {    
    socketNewOrder(order));        
});
Run Code Online (Sandbox Code Playgroud)

它确实调用了动作,但我的减速器没有“听到”动作!:(

我听说了一些关于使用中间件的消息,但我就是不知道如何去做。

谁能解释我如何在接收套接字消息时使用中间件来调度操作,以及为什么我的代码不起作用?感谢和抱歉新手问题

sockets action dispatch socket.io redux

4
推荐指数
1
解决办法
1921
查看次数

每次渲染时获取组件的高度

所以,大家好,基本上我正在使用react,我想通过props获取父div的高度,并使它的孩子具有相同的高度。每次调整窗口大小时,父div都会渲染。我尝试使用componentDidMountsetState获取父级的高度,但componentDidMount仅在父级div第一次渲染时才被调用。

而且我不能使用ReactDOM.findDOMNode(this).clientHeight内部render()函数。

为简化起见,这些步骤如下:

  • (每次)调整窗口大小
  • Div1被渲染
  • 获取Div1高度并将其设置为状态
  • 通过道具将其传递给Div2。

有任何想法吗?

这是一段代码:

import React, { Component } from 'react';
import Div2 from './Div2';

    class Div1 extends Component {
      constructor(props){
        super(props);
        this.state = {
          height: 0
        };
      }

      componentDidMount() {
      var height = (ReactDOM.findDOMNode(this).clientHeight);
      this.setState({height: height})
      }    

      render() { 
         return(    
          <div className='Div1'>    
            <Div2 height={this.state.height}/>   
          </div>    
      );
      }
    }

    export default Div1;
Run Code Online (Sandbox Code Playgroud)

height components render reactjs

2
推荐指数
1
解决办法
7990
查看次数

标签 统计

action ×1

components ×1

dispatch ×1

height ×1

reactjs ×1

redux ×1

render ×1

socket.io ×1

sockets ×1