Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 反应:动态位置不';不要在第一次渲染时工作_Reactjs - Fatal编程技术网

Reactjs 反应:动态位置不';不要在第一次渲染时工作

Reactjs 反应:动态位置不';不要在第一次渲染时工作,reactjs,Reactjs,我正在尝试制作一个容器组件,它可以用鼠标拖动,并且可以拖动所有的子组件。我有它大部分工作,但不是最初的位置。我传入组件和x,y,这将设置状态变量。在渲染中,我将这些变量作为样式传递给div。初始位置根据css(如果未在css中设置,则为0)。然后,当我第一次拖动它时,它会跳到传入的坐标。我在渲染中有一个log语句,每个渲染都得到正确的状态变量 我尝试在componentDidMount中对状态进行虚拟更新,以查看是否可以欺骗它,使其在拖动时的行为与拖动时相同,但不进行任何更改 .draggabl

我正在尝试制作一个容器组件,它可以用鼠标拖动,并且可以拖动所有的子组件。我有它大部分工作,但不是最初的位置。我传入组件和x,y,这将设置状态变量。在渲染中,我将这些变量作为样式传递给div。初始位置根据css(如果未在css中设置,则为0)。然后,当我第一次拖动它时,它会跳到传入的坐标。我在渲染中有一个log语句,每个渲染都得到正确的状态变量

我尝试在componentDidMount中对状态进行虚拟更新,以查看是否可以欺骗它,使其在拖动时的行为与拖动时相同,但不进行任何更改

.draggable {
    cursor: pointer;
    width: 200px;
    height: 200px;
    background-color: #cca;
    position: absolute;
    z-index: 2;
}

export default class Draggable extends React.Component{

  constructor(props){
        super(); 
         this.state = {
               preDragPos: {x:props.initialX, y:props.initialY},
               pos: {x:props.initialX, y:props.initialY},
               dragging: false,
               rel: null // Initial Mouse Down location
           }

....
Use mouse up/down/move to modify this.state.pos
....
 render () {
      const dragStyle = {
        left: this.state.pos.x,
        top: this.state.pos.y,
      };
      console.log("Render", dragStyle);

      return (
      <div className="draggable" style={dragStyle} onMouseDown={this.onMouseDown} onMouseUp={this.onMouseUp}>
        {this.props.children}
      </div>      
    );
  }
.draggable{
光标:指针;
宽度:200px;
高度:200px;
背景色:#cca;
位置:绝对位置;
z指数:2;
}
导出默认类可拖动的扩展React.Component{
建造师(道具){
超级();
此.state={
preDragPos:{x:props.initialX,y:props.initialY},
pos:{x:props.initialX,y:props.initialY},
拖动:false,
rel:null//初始鼠标下移位置
}
....
使用鼠标上/下/移动修改此.state.pos
....
渲染(){
常量dragStyle={
左:这个州,位置x,
上图:这个州,位置y,
};
console.log(“渲染”,dragStyle);
返回(
{this.props.children}
);
}

感谢用户hermitcrab。创建组件时,我将参数传递为“100”而不是{100}。两者的console.log看起来相同,但效果不同。

感谢用户hermitcrab。创建组件时,我将参数传递为“100”而不是{100}。两者的console.log看起来完全相同,但效果却不同。

这很奇怪,您的代码在我的计算机上运行得非常好。您是否尝试过检查div的第一次渲染以确保其属性正确?可能是您的设备的另一部分产生了css副作用您确定您正确地传递了x和y吗r分量?应该是这样的:谢谢HermitCrab,正是它,我有“100”而不是{100}当然,它在日志语句中打印得很好。从C++ YOJavaScript转换到缺少类型转换,这会使我感到非常的糟糕。我知道你的意思,我也在从C++中转换。你能编辑你的帖子并把它标记为固定吗?因为我最终把一个栈过流帐户作为一个借口,只是潜伏着我还没有足够的名声。在你的答案旁边没有复选标记供我点击。这似乎是堆栈溢出的一个非常奇怪的选择。这很奇怪,你的代码在我的计算机上运行得非常好。你是否尝试过检查你的div的第一次渲染以确保其属性正确?也许你的外观的另一部分有css副作用你确定你通过了吗将x和y正确地映射到组件中?应该是这样的:谢谢HermitCrab,就是这样,我有“100”而不是{100}当然,它在日志语句中打印得很好。从C++ YOJavaScript转换到缺少类型转换,这会使我感到非常的糟糕。我知道你的意思,我也在从C++中转换。你能编辑你的帖子并把它标记为固定吗?因为我最终把一个栈过流帐户作为一个借口,只是潜伏着我还没有足够的名声。您的答案旁边没有复选标记供我点击。这似乎是堆栈溢出的一个非常奇怪的选择。