不能在React中获得粘性工作
Can't get Sticky Working in React
我正试图使用INK的sticky js模块来工作。出于某种原因,它不是。我还注意到,如果取<div className="ink-sticky">
<div className="ink-alert basic">Hey I stick to the top when you scroll!</div>
</div>
退出我的react组件(当然,将className更改为class)并直接在我的index.html中传递,sticky工作得很好。
http://ink.sapo.pt/javascript-ui/InkUISticky_1
我的React组件:
const Content = Component({
render(){
var company = this.props.company;
return (
<div className='content padding-bottom-200 margin-top-50'>
<div className="column-group">
<div className="all-20">
<div className="ink-sticky">
<div className="ink-alert basic">Hey I stick to the top when you scroll!</div>
</div>
</div>
<div className="all-80">
</div>
</div>
</div>
)
}
})
export default Content;
当页面呈现时,我看到墨水警告已经为我的div设置了样式,但是墨水粘贴没有做任何事情。我在index.html中包含了js,如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="/lib/ink-3.1.10/css/ink-flex.min.css">
<link rel="stylesheet" type="text/css" href="/lib/ink-3.1.10/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="/lib/css/master.css" />
</head>
<body>
<div class="wrap">
<div class="ink-grid">
<div id="app"></div>
<script type="text/javascript" src="/scripts/app.bundle.js"></script>
<script type="text/javascript" src="/lib/ink-3.1.10/js/ink-all.min.js"></script>
<script type="text/javascript" src="/lib/ink-3.1.10/js/autoload.min.js"></script>
</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="/lib/ink-3.1.10/css/ink-flex.min.css">
<link rel="stylesheet" type="text/css" href="/lib/ink-3.1.10/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="/lib/css/master.css" />
</head>
<body>
<div class="wrap">
<div class="ink-grid">
<div class="ink-sticky">
<div class="ink-alert basic">Hey I stick to the top when you scroll!</div>
</div>
<div id="app"></div>
<script type="text/javascript" src="/scripts/app.bundle.js"></script>
<script type="text/javascript" src="/lib/ink-3.1.10/js/ink-all.min.js"></script>
<script type="text/javascript" src="/lib/ink-3.1.10/js/autoload.min.js"></script>
</div>
</div>
</body>
</html>
这可能与以下事实有关:为了使元素具有粘性,ink-sticky
调用一些JS来实现这一点。现在,当页面刚刚呈现时,它尝试通过类名查找粘接元素并自动使它们成为该类,但是您的粘接元素不在HTML中。它们被动态地添加到DOM中。
这意味着,你必须告诉ink
手动使某个元素具有粘性。
最合适的地方是在componentDidMount
生命周期钩子中。
据我所知,Ink确实有一个API来使元素具有粘性:http://ink.sapo.pt/javascript/Ink.UI.Sticky/
理想情况下,这种行为应该被封装到它自己的组件中:
const Sticky = React.createClass({
componentDidMount() {
const el = ReactDOM.findDOMNode(this);
new Ink.UI.Sticky(el);
},
render() {
return <div>{this.props.children}</div>
}
});
这种方法是用来桥接其他UI库与React,而不仅仅是这个。它可以用于jQuery UI和插件,等等。
相关文章:
- react router router.HistoryLocation以<noscript>但没有完美的工作
- React Native DeviceEventEmitter键盘WillShow停止工作
- 在流星中react不工作的defaultValue
- 如何让 JavaScript 在 React 组件中工作
- react如何与修改html的javascript ui组件协同工作
- 指向leanModal.js的链接在通过HTML链接呈现时工作良好,但在React中则不然
- 使list.js和react.js协同工作
- React组件onClick处理程序不工作
- Dispatch()调用一个函数,但是.then()不调用;我不在React Redux上工作
- 如何让两个不相关的 React 组件一起工作
- setState 开始在 React.js 中递归工作
- React Native - Android应用程序在调试上工作,在发布时崩溃
- 通过带有对象子级的数组进行 React 本机映射 - 工作方式与在 react web 中不同
- React无法在Internet Explorer中工作
- 让React开发人员工具与Webpack一起工作
- React路由器不工作
- 使用react路由器,redux将无法工作
- Refs在react上的工作方式0.14
- React.js +中间人是如何为缓存和SEO工作的
- 我如何让介绍js与React一起工作