我有一个组件<Button>.
如果组件没有this.props.children,我想将prop设置ariaLabel为isRequired,否则可以是可选的.我怎么做?
ariaLabel 道具不需要:
<Button>Add to bag</Button>
Run Code Online (Sandbox Code Playgroud)
ariaLabel 必须要求道具:
<Button ariaLabel="Add to bag" icon={ favorite } />
Run Code Online (Sandbox Code Playgroud)
if this.props.children和this.props.ariaLabel是空的,它会抛出一个错误,说this.props.ariaLabel是的isRequired
<Button icon={ favorite } />
Run Code Online (Sandbox Code Playgroud)
propTypes:
Button.propTypes = {
/** icon inside Button. */
icon: React.PropTypes.object,
/** Content inside button */
children: React.PropTypes.node,
/** Aria-label to screen readers */
ariaLabel: React.PropTypes.string, /*isRequired if children is empty */
};
Run Code Online (Sandbox Code Playgroud)
谢谢
简历:我需要在没有wepback或类似工具的情况下运行React Router.直接来自CDN链接,但我遇到了一些require.js错误.
我开始使用React构建我的第一个应用程序,我正在努力使用React Router.
HTML:
<body>
<div id="container"></div>
<script src="https://unpkg.com/react@15/dist/react.js"></script>
<script src="https://unpkg.com/react-dom@15/dist/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.js"></script>
<script src="https://npmcdn.com/react-router@2.4.0/umd/ReactRouter.js"></script>
<script type="text/babel" src="assets/scripts/03_templates/app.js" charset="utf-8"></script>
</body>
Run Code Online (Sandbox Code Playgroud)
JS:
var { Router, Route, IndexRoute, hashHistory, IndexLink, Link, browserHistory } = ReactRouter;
//some classes
ReactDOM.render((
<Router history={hashHistory}>
<Route path="/" component={Window}>
<IndexRoute component={InitialPage}/>
<Route path="register" component={Register} />
<Route path="search" component={Search} />
</Route>
</Router>
), document.getElementById("container"));
Run Code Online (Sandbox Code Playgroud)
一切都运行正常,但我在控制台上得到这个:
react.js:3639警告:您正在手动调用
getComponentprop 的React.PropTypes验证函数IndexRoute.这已被弃用,在下一个主要版本的生产中无法使用.由于第三方PropTypes库,您可能会看到此警告.
所以,我想我的反应路由器是旧版本.我将链接更改为
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-router/4.0.0-0/react-router.js"></script>
Run Code Online (Sandbox Code Playgroud)
警告:React.createElement:type不应为null,undefined,boolean或number.它应该是一个字符串(对于DOM元素)或一个ReactClass(对于复合组件).
我搜索它,似乎问题在第1行.所以我改变了这个:
var { Router, Route, IndexRoute, hashHistory, IndexLink, Link, browserHistory } = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用"聊天"和"内容"两个段来编写页面.我想要一个"聊天"段,页面自动滚动到底部,没有任何效果.聊天是<ion-list>几个<ion-item>.
<ion-list>
<ion-item> item 1 </ion-item>
<ion-item> item 2 </ion-item>
....
<ion-item> item 20 </ion-item>
<ion-item> item 21 </ion-item> <!-- user should see directly this item on bottom of the page -->
</ion-list>
Run Code Online (Sandbox Code Playgroud)
我使用的是Javascript,而不是打字稿,我不想使用jQuery.谢谢:)另外,当我进入"内容"细分并回到"聊天"时,我想再次自动滚动聊天.
<Link>在 React Router v6 中,如何使用而不是返回到上一页useNavigate()。
// Instead of this...
<button onClick={() => navigate(-1)}>
Run Code Online (Sandbox Code Playgroud)
// Instead of this...
<button onClick={() => navigate(-1)}>
Run Code Online (Sandbox Code Playgroud)
将其更改为<Link>将允许我使用<a href="xxxx">而不是 a <button>,这是在页面之间创建链接的最容易访问的方式。(有关按钮与链接的更多信息)。例如,它允许用户右键单击并在新选项卡中打开页面。
但我不知道将什么 URL 传递给链接。
更新:我创建了一个codesandbox来帮助您找到解决方案。
更新 2:根据答案和一些研究,我创建了一个 GitHub 问题react-router
更新3:我在下面添加了我自己对此问题的答案。
我正在使用 CSS 变量制作动画,其中 CSS 变量值根据页面滚动而变化。然后将该变量用于具有关键帧的动画。
最初它只能在 Firefox 上正确更新。同时,我找到了一种方法让它在 Chrome 上也能工作,通过强制重新绘制,在这种情况下,将颜色从 #000 动画到 #001。
/* --scale is dynamic changed by JS */
@keyframes move {
0% {
transform: translateX(0) scale(var(--scale));
color: #000;
}
100% {
transform: translateX(33vw) scale(1.5);
color: #001;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在将我的应用发布到 App Store,但我对“缺少合规性”步骤有疑问。
以下是有关该应用程序的一些信息:
谢谢!
我用ionic2创建了一个toast(+ angular2 with javascript,而不是typescript),用户从列表中删除了一个项目.
到目前为止Undo一切都很好,现在我想在吐司里面添加一个按钮(替换为Undo),将它放回到列表中并同时解除吐司.
我的代码到目前为止:
archiveItem(item) {
let toast = Toast.create({
message: 'Item archived.',
duration: 2000,
showCloseButton: true,
closeButtonText: 'Undo',
dismissOnPageChange: true,
});
var index = this.items.indexOf(item);
this.items.splice(index, 1); //remove the item
toast.onDismiss(() => {
console.log('Dismissed toast');
this.items.splice(index, 0, item); //put back the item on right place
});
this.nav.present(toast);
}
Run Code Online (Sandbox Code Playgroud)
单击时Undo,该项目返回列表,问题是如果我不单击它,它也会返回到列表.
我想我需要创建另一个函数Undo,但我不知道该怎么做,Ionic2 DOCS不会谈论它...
谢谢 :)
如何通过存储库与同事共享我的自定义片段?例如,共享javascript.json文件。
我知道它应该进入内部.vscode,但具体在哪里以及具体的配置是什么?
我正在尝试构建一个从 0 到 5 星(及其中间值,如 x.5 [example 4.5] )的简单动态速率,该速率从 javascript 接收值。
我用 *ngFor 寻找了一些东西,但我不明白它是如何工作的。有人可以解释/帮助我吗?
如果有帮助,对于离子,我们有 3 种类型的星星可用:
<ion-icon name="star"></ion-icon>
<ion-icon name="star-half"></ion-icon>
<ion-icon name="star-outline"></ion-icon>
Run Code Online (Sandbox Code Playgroud)
例如,如果我从服务器收到一个值率 = 3.5,它会呈现:
<ion-icon name="star"></ion-icon>
<ion-icon name="star"></ion-icon>
<ion-icon name="star"></ion-icon>
<ion-icon name="star-half"></ion-icon>
<ion-icon name="star-outline"></ion-icon>
Run Code Online (Sandbox Code Playgroud)
我正在使用 javascript,没有打字稿。
非常感谢 :)
ps不确定这个标题是否更好,欢迎任何建议:)
我有2个属性连接到2道具:aria-hidden和aria-label.
什么时候aria-hidden是真的,它只显示一个.如果它是假的,它只显示aria-label.
我写了这段代码,但它并不干......我怎样才能改进它?
render() {
let svgMarkup = '';
if (this.props.hidden) {
svgMarkup = (
<svg role="img" aria-hidden="true">
...
</svg>
);
} else {
svgMarkup = (
<svg role="img" aria-label={ this.props.label }>
...
</svg>
);
}
return svgMarkup;
}
Run Code Online (Sandbox Code Playgroud) javascript ×5
reactjs ×4
angular ×3
ionic2 ×3
wai-aria ×2
animation ×1
autoscroll ×1
cdn ×1
chat ×1
css ×1
encryption ×1
expo ×1
ios ×1
ngfor ×1
rate ×1
react-jsx ×1
react-native ×1
react-router ×1
repaint ×1
requirejs ×1
safari ×1
toast ×1
undo ×1