reactjs - 安装包 react 后无法操作状态
问题描述
我有反应应用程序和显示照片滑块我安装了tiny-slider-react
包,我安装它并配置它工作正常,直到我尝试对状态做一些事情,即使我尝试做这样的事情:
const [count, setCount] = useState(0)
useEffect(() => {
setCount(23)
},
[])
我不能使用状态无效。请问我怎样才能弄清楚发生了什么,我该如何解决?
升级版:
<BackgroundLayer theme="lightPink2">
<PageContent paddingTop marginTop>
<Chapter title={title} description={description} className="logos" />
<div className="is-mobile is-hidden-desktop is-hidden-tablet">
<TinySlider settings={settings} onTouchMove={(event) => setIndex(event.index)}>
{renderLogos(logos, "slider-padding", "slider__image")}
</TinySlider>
<div className="squares">
{aaaaaaa.map(a => (
<div key={guuid()} className={a.val} />
))}
</div>
</div>
</PageContent>
</BackgroundLayer>
UDP2 设置:
const settings = {
nav: false,
mouseDrag: true,
controls: false,
loop: false,
}
UPD3:这就是 RenderLogos 方法的样子
const renderLogos = (logos, firstClass, secondClass) => {
return (
<>
{logos.map(s => (
<div key={guuid()} className={firstClass}>
{s.map(({ logo: { title, file: { url } } }) => (
<Logo
url={url}
title={title}
key={guuid()}
styleClass={secondClass}
/>
))}
</div>
))}
</>
)
}
解决方案
问题是您正在渲染 React.Fragment(1 个元素),而库假定您将渲染多个元素作为 TinySlider 的子元素。
尝试将 renderLogos 更改为:
const renderLogos = (logos, firstClass, secondClass) => {
// render a list directly, not a list inside a fragment
return logos.map((s) => (
<div key={guuid()} className={firstClass}>
{s.map(({ logo: { title, file: { url } } }) => (
<Logo url={url} title={title} key={guuid()} styleClass={secondClass} />
))}
</div>
));
};
推荐阅读
- ruby-on-rails - 为什么 Rails 为每个用户关联 2 个项目?
- java - 防止 Java 类被实例化和继承
- android - 如何取消 Places SDK for Android 查找自动完成预测任务?
- javascript - 无法运行对象的功能
- javascript - 如何根据新值仅对已排序的 2D 数组的特定部分进行排序。但前提是第一个排序值在 Javascript 中匹配
- javascript - material-ui 如何更改 TablePagination 中的初始 rowsPerPage
- android - 使用camera2 api实时获取数据字节[]
- azure-devops - Azure DevOps 向利益相关者隐藏开发人员列表
- python - 如何获取多维数组的最小值索引数组?
- java - 如何通过 Java 中的 Executor Framework 在 DynamoDb 中获得最佳批量插入率?