React Easy State 的开发工具?
Devtools for React Easy State?
我只是从 redux 切换过来,是否有可用的工具来检查甚至操纵 React Easy State 存储以用于开发目的,或者您有什么好的实践 Tipps 可以这样做吗?
是否有可能 console.log 每次更改时的当前状态?
确实可以使用 middleware. A simple logging middleware can look like this (it's typed in Flow):
记录状态变化
export default (store: Store<ReduxState>) => (
next: (action: Action) => ReduxState
) => (action: Action) => {
console.log(`dispatching: ${action.type}`)
const result = next(action)
console.log(`next state: ${JSON.stringify(store.getState())}`)
return result
}
操纵是另一回事。你可以创建一个 "cli" - 我最近做了这个 in a project。它基本上只是一个暴露给浏览器控制台的 JS 函数。
或者,我建议使用浏览器插件。最广为人知的可能是 "Redux DevTools",它至少可用于 Firefox 和 Chrome。它为您提供了对 redux
状态的 CRUD 控制(创建、读取、更新、删除)。
编辑: 因为我误读了你的问题,GitHub 上的这个 comment 可能会让你感兴趣。似乎没有非常活跃的维护者^^ 但是抱歉,我对easy-state一无所知。
我们还没有开发工具,但这是一个经常被要求的功能。它在我们的议程上,我们已经在收集有关人们对开发工具的期望的数据。 Sooo...对您来说,React state devtool 中的必备功能是什么?
关于时间线:我们将在开发工具之前发布更好的文档、linter 和可能的严格模式。我们已经有一个非常基本的 devtool 原语(它只记录大量数据)可以同时使用。不过它永远不会成为官方 API,我们只会在以后的版本中将其删除。你感兴趣吗?我们是否应该将其作为临时解决方案发布?
Is ist maybe possible to console.log the current State on every change?
当然可以:
import { store, autoEffect } from '@risingstack/react-easy-state'
const myStore = store({
name: 'Bob'
})
autoEffect(() => console.log(JSON.stringify(myStore, null, 2)))
// logs `{ name: 'Ann' }`
myStore.name = 'Ann'
(我是 React Easy State 的作者)
如果您使用的是全球商店,例如:
const myStore = store({
a: 1
});
您可以将它们分配给 window 对象,因此在您的 chrome/firefox 开发工具中,您可以执行以下操作:
window.__EASY_STORES__ = {
MY_STORE: myStore
}
然后您可以在控制台中改变该对象,如果您的组件包装在 view
中,它应该反映在渲染中。
除此之外,目前社区中正在讨论构建一整套开发工具,但目前我们不提供任何开箱即用的检查器或库周围的开发工具。
我只是从 redux 切换过来,是否有可用的工具来检查甚至操纵 React Easy State 存储以用于开发目的,或者您有什么好的实践 Tipps 可以这样做吗? 是否有可能 console.log 每次更改时的当前状态?
确实可以使用 middleware. A simple logging middleware can look like this (it's typed in Flow):
记录状态变化export default (store: Store<ReduxState>) => (
next: (action: Action) => ReduxState
) => (action: Action) => {
console.log(`dispatching: ${action.type}`)
const result = next(action)
console.log(`next state: ${JSON.stringify(store.getState())}`)
return result
}
操纵是另一回事。你可以创建一个 "cli" - 我最近做了这个 in a project。它基本上只是一个暴露给浏览器控制台的 JS 函数。
或者,我建议使用浏览器插件。最广为人知的可能是 "Redux DevTools",它至少可用于 Firefox 和 Chrome。它为您提供了对 redux
状态的 CRUD 控制(创建、读取、更新、删除)。
编辑: 因为我误读了你的问题,GitHub 上的这个 comment 可能会让你感兴趣。似乎没有非常活跃的维护者^^ 但是抱歉,我对easy-state一无所知。
我们还没有开发工具,但这是一个经常被要求的功能。它在我们的议程上,我们已经在收集有关人们对开发工具的期望的数据。 Sooo...对您来说,React state devtool 中的必备功能是什么?
关于时间线:我们将在开发工具之前发布更好的文档、linter 和可能的严格模式。我们已经有一个非常基本的 devtool 原语(它只记录大量数据)可以同时使用。不过它永远不会成为官方 API,我们只会在以后的版本中将其删除。你感兴趣吗?我们是否应该将其作为临时解决方案发布?
Is ist maybe possible to console.log the current State on every change?
当然可以:
import { store, autoEffect } from '@risingstack/react-easy-state'
const myStore = store({
name: 'Bob'
})
autoEffect(() => console.log(JSON.stringify(myStore, null, 2)))
// logs `{ name: 'Ann' }`
myStore.name = 'Ann'
(我是 React Easy State 的作者)
如果您使用的是全球商店,例如:
const myStore = store({
a: 1
});
您可以将它们分配给 window 对象,因此在您的 chrome/firefox 开发工具中,您可以执行以下操作:
window.__EASY_STORES__ = {
MY_STORE: myStore
}
然后您可以在控制台中改变该对象,如果您的组件包装在 view
中,它应该反映在渲染中。
除此之外,目前社区中正在讨论构建一整套开发工具,但目前我们不提供任何开箱即用的检查器或库周围的开发工具。