storybook 当在"Docs"部分更改属性时,整个组件都会被重绘,

9q78igpj  于 6个月前  发布在  其他
关注(0)|答案(8)|浏览(57)

描述bug

当在“文档”部分更改属性时,整个组件都会重绘。

重现

重现此行为的步骤:

  1. git clone https://github.com/schoonc/test-storybook-vue-docs-render
  2. npm i
  3. npm run storybook
  4. 更改“画布”部分中的属性。我们可以看到元素的颜色平滑地变化(storybook仅更改元素的类)。
  5. 更改“文档”部分中的属性。我们看到元素的颜色立即发生变化(storybook完全重绘了元素)。

预期行为

组件不应完全重绘。

截图

代码片段

package.json中的依赖项:

"devDependencies": {
    "@babel/core": "^7.11.6",
    "@storybook/addon-actions": "^6.0.25",
    "@storybook/addon-essentials": "^6.0.25",
    "@storybook/addon-links": "^6.0.25",
    "@storybook/vue": "^6.0.25",
    "babel-loader": "^8.1.0",
    "react-is": "^16.13.1"
  },
  "dependencies": {
    "vue": "^2.6.12",
    "vue-loader": "^15.9.3",
    "vue-template-compiler": "^2.6.12"
  },

.storybook/main.js:

module.exports = {
  "stories": [
    "../stories/**/*.stories.js"
  ],
  "addons": [
    "@storybook/addon-essentials"
  ]
}

stories/testdiv.css:

.testdiv {
  background: blue;
  transition: all 1s;
}
.testdiv-red {
  background: red;
}

stories/Testdiv.stories.js:

import Testdiv from './Testdiv.vue';

export default {
  title: 'testdiv',
  component: Testdiv,
};

export const Default = (args, { argTypes }) => ({
  props: Object.keys(argTypes),
  components: { Testdiv },
  template: '<testdiv v-bind="$props" />',
})

stories/Testdiv.vue:

<template>
  <div class="testdiv" :class="{'testdiv-red': red}">TEST</div>
</template>

<script>
import './testdiv.css';

export default {
  name: 'testdiv',

  props: {
    red: Boolean
  },
};
</script>

系统

Environment Info:

  System:
    OS: Linux 5.4 Ubuntu 20.04.1 LTS (Focal Fossa)
    CPU: (8) x64 AMD Ryzen 5 3550H with Radeon Vega Mobile Gfx
  Binaries:
    Node: 12.18.4 - /usr/bin/node
    Yarn: 1.22.5 - /usr/bin/yarn
    npm: 6.14.6 - /usr/bin/npm
  Browsers:
    Chrome: 84.0.4147.125
    Firefox: 81.0

了解这种行为的原因会很有趣。如果从技术上讲这是合理的(例如,目前技术上难以实现),那么在文档中描述这种行为将是很酷的。

yx2lnoni

yx2lnoni1#

大家好!最近似乎没有太多关于这个问题的进展。如果还有问题、评论或错误,请随时继续讨论。遗憾的是,我们没有时间处理每一个问题。我们始终欢迎贡献,所以如果你想帮忙,请发送一个pull request。30天后未活跃的问题将被关闭。谢谢!

envsm3lx

envsm3lx2#

在我这边,当在文档页面的ArgsTable中更改一个属性后,画布需要大约5秒钟才能重新渲染。

zxlwwiss

zxlwwiss3#

如果页面上有12个故事,例如我的情况,只需一个故事,即使在开发模式下,重新渲染也是瞬间完成的。

cvxl0en2

cvxl0en24#

@as-zlynn-philipps 这应该会有很大帮助 #14002
你能升级到测试版并告诉我你看到了什么吗?

npx sb upgrade --prerelease
pb3skfrl

pb3skfrl5#

感谢shilman!这次测试并计数。似乎在开发模式下,每次属性更改时需要1-11秒重新渲染,并且有几个故事。我无法分辨不同的延迟时间有任何规律或原因。

cu6pst1q

cu6pst1q6#

我正在经历原始问题。这与延迟无关,只是使storybook在某些组件上无法提供帮助。
例如,一个使用css过渡来实现状态变化的组件无法在storybook中进行测试,因为当属性发生变化时,它会被重绘。重绘首先将所有内容重置为默认值,然后应用新的属性值,因此在应该有过渡的地方出现了跳跃。

oyxsuwqo

oyxsuwqo7#

你好,有任何更新吗?

kmbjn2e3

kmbjn2e38#

在6.5.10版本中仍然可以看到这个。

相关问题