我正在用Java进行一些简单的递归练习,以便理解这个概念(我很挣扎).对于我迄今为止的所有研究,我非常依赖Eclipse的调试器,以便准确理解我的代码在做什么.然而,当谈到递归时,我发现情况并非如此,因为很难准确追踪正在发生的事情.
考虑以下代码,返回nth斐波纳契数的方法:
public int fibonacci(int n) {
if (n == 0 || n == 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
Run Code Online (Sandbox Code Playgroud)
在为此代码使用调试器时,很难准确跟踪发生的情况以及何时/何时.只有一个变量,它会改变每一步,并且,n由于在最终达到13之前执行了如此多的步骤,因此使用较小的值(例如7)已经变得难以跟踪.
我想知道:
return fibonacci(n - 1) + fibonacci(n - 2)很容易理解,我是否过分关注这类事情的调试?我正在制作一个应用程序,它从远程源获取一系列新闻项目并将其显示在页面上。
我有端点,并且可以使用控制台日志证明可以成功进行调用$.getJSON()。我将此调用放入父组件中,因为子组件需要使用数据。
但是,当我将此数据传递给子组件时,会出现控制台错误:
Uncaught TypeError: Cannot read property 'headline' of undefined
这是因为 React 甚至在数据传递到组件之前就尝试渲染组件。这让我觉得我应该首先在componentDidMount.
为了解决这个问题,我在子组件上设置了一个方法,如果存在 prop,则返回标题:
getHeadline: function () {
if(this.props.newsItems){
return this.props.newsItems.headline
} else {
return null
}
},
Run Code Online (Sandbox Code Playgroud)
这感觉有点令人讨厌。有没有更好的方法,或者我在代码中遗漏了某些内容?
var BigStory = React.createClass({
getHeadline: function () {
if(this.props.newsItems){
return this.props.newsItems.headline
} else {
return null
}
},
render: function () {
console.log('props:', this.props);
console.log('newsItems:', this.props.newsItems);
return (
<div className="big-story col-xs-12">
<div className="col-sm-5">
<h1>{this.getHeadline()}</h1>
<p>Placeholder text here for now.</p>
<p>time | link</p>
</div>
<div className="col-sm-7"> …Run Code Online (Sandbox Code Playgroud) 我正在使用NodeJS构建一个小的url-shortener应用程序.我在ES6中编写代码,使用导入Babel然后我的服务器的索引文件:
require('babel-core/register');
require('./server.js');
Run Code Online (Sandbox Code Playgroud)
这在localhost上完全正常,我的所有ES6代码都能正常工作.
但是,当我成功部署到Heroku时,我收到一个应用程序错误,并在heroku日志中显示以下内容--tail -a shortenthisurl:
2016-02-06T12:31:14.074071+00:00 heroku[slug-compiler]: Slug compilation started
2016-02-06T12:31:14.074080+00:00 heroku[slug-compiler]: Slug compilation finished
2016-02-06T12:31:13.936954+00:00 heroku[api]: Deploy f576f69 by rory88@gmail.com
2016-02-06T12:31:13.936991+00:00 heroku[api]: Release v17 created by rory88@gmail.com
2016-02-06T12:31:14.230327+00:00 heroku[web.1]: State changed from crashed to starting
2016-02-06T12:31:15.215417+00:00 heroku[web.1]: Starting process with command `node index.js`
2016-02-06T12:31:16.816525+00:00 app[web.1]: module.js:341
2016-02-06T12:31:16.816534+00:00 app[web.1]: throw err;
2016-02-06T12:31:16.816535+00:00 app[web.1]: ^
2016-02-06T12:31:16.816536+00:00 app[web.1]:
2016-02-06T12:31:16.816541+00:00 app[web.1]: Error: Cannot find module 'babel-core/register'
2016-02-06T12:31:16.816541+00:00 app[web.1]: at Function.Module._resolveFilename (module.js:339:15)
2016-02-06T12:31:16.816542+00:00 app[web.1]: at Function.Module._load (module.js:290:25)
2016-02-06T12:31:16.816543+00:00 app[web.1]: at Module.require (module.js:367:17) …Run Code Online (Sandbox Code Playgroud) 我刚刚preact-redux-example起步并运行,现在我正在尝试在我的应用程序中使用Preact Dev Tools.
基于这篇文章,我认为这是一个添加的案例
import 'preact/devtools'
Run Code Online (Sandbox Code Playgroud)
进入入口点(app.js)文件.
但是,这会产生以下错误:
./src/components/app.js
Module not found: Error: Cannot resolve module 'preact/devtools'
Run Code Online (Sandbox Code Playgroud)
我需要安装其他东西,还是我走错了路?
我有一个范围输入字段,其数值在我拖动时会发生变化:
当我一直向右拖动时,输入的最大值会增加.然后,当我释放(onMouseUp或onTouchEnd)时,最大值减小,以便我可以进一步拖动并通过拖动继续增加最大值:
当我一直向左拖动时,输入的最小值减小.然后,当我释放(onMouseUp或onTouchEnd)时,最小值增加,以便我可以进一步拖动并通过拖动继续减少min:
我应该总是有99的范围.例如,如果我将最大值增加到530,则最小值将为431.
问题:
我有两个递归setTimeouts设置min和max值更改.
当用户首先拖动到任何一侧时,该数字应该慢慢改变.如果他们持有2秒钟,数字应该会更快地增加.相关代码:
// After arbitrary period, increase the rate at which the max value increments
this.fasterChangeStake = setTimeout(() => {
this.stakeChangeTimeout = this.FAST_STAKE_CHANGE_TIMEOUT;
}, 2000);
Run Code Online (Sandbox Code Playgroud)
这是第一次工作.但随后,它首先锁定更快的超时:
尽管在拖动结束时我清除了超时:
clearTimeout(this.increaseStakeLimits);
clearTimeout(this.decreaseStakeLimits);
clearTimeout(this.timer);
Run Code Online (Sandbox Code Playgroud)
为什么第一个(较慢的)超时没有吸引力?
Codepen:https://codepen.io/alanbuchanan/pen/NgjKMa ? editors = 0010
JS:
const {observable, action} = mobx
const {observer} = mobxReact
const {Component} = React
@observer
class InputRange extends Component {
constructor() {
super();
this.INITIAL_STAKE_CHANGE_TIMEOUT = 200;
this.FAST_STAKE_CHANGE_TIMEOUT = 20;
this.SNAP_PERCENT = …Run Code Online (Sandbox Code Playgroud) 使用 React Native,我使用以下内容WebView:
<WebView
ref={webview => (this.webview = webview)}
source={{
uri: `${this.state.enviroment}`
}}
onMessage={this.onMessage}
injectedJavaScript={patchPostMessageJsCode}
style={{ backgroundColor: "black" }}
/>
Run Code Online (Sandbox Code Playgroud)
这可行,但问题是它使用原生 Android 浏览器来加载我的页面。这是一个问题,因为在 Android 4.1 的原生浏览器中,该网站存在问题。
话虽如此,在相同的操作系统版本上,该网站在 Chrome 上表现良好。
如何使用userAgentprop 告诉我WebView使用 Chrome 来加载页面而不是普通浏览器?
我有一个 React Native 应用程序,它使用 Twilio Chat API 连接到一个频道。我正在使用这个仓库:https : //github.com/twilio/TwilioChatJsReactNative
我正在使用this.generalChannel.join()加入我的一般频道。这适用于任何新用户。
根据回购自述文件中的文档,我在后台运行了令牌生成器。
但是,当我尝试使用现有用户名登录时,出现statusText“成员已存在”的错误。
如何使用现有用户登录我的 Twilio Chat 频道?
是否有一个优雅的解决方案来解构对象而不指定所有对象的属性?
我想知道是否可以使用扩展运算符,但似乎这是不可能的,因为对象不是数组!
我想盲目声明变量可能被认为是一个坏主意,但我认为这对非常大的对象很有用.
我使用Angular Material创建了一个表单,该表单使用下拉列表从book具有名称和ID 的对象数组中进行选择,最终目的是将其交换到我的集合中的另一本书.这是我的典型交易对象的样子:
var tradeItem = {
wanted: {
user: 'barryjohnson',
bookId: 'foo1bar2'
},
offered: {
user: 'dangraham',
bookId: 'bar7baz8'
},
};
Run Code Online (Sandbox Code Playgroud)
我想将整个对象保存到我ng-model的选择菜单中,所以我希望ng-repeat引用整个数组对象.这样我就可以对我的数据库做一个简单的后续请求.
目前它只保存标题,这是我md-option标签内的标题.
这是我的观点:
md-dialog(aria-label='Trade', ng-cloak='')
form
md-toolbar
.md-toolbar-tools
h2 Propose a Trade
span(flex='')
md-dialog-content(style='max-width:800px;max-height:810px; ')
.md-dialog-content
p Which of your books would you like to trade for '{{userClickedBook.title}}'?
p {{selected}}
md-input-container.md-block
label(for="mySelect") Your Books
md-select(name="mySelect", ng-model='selected')
md-option(ng-repeat="book in usersBooks") {{book.title}}
div(layout='row')
md-button(ng-click='cancelDialog()', style='margin-right: 20px;') Cancel
md-button.md-primary(ng-click='save()', ng-disabled='myForm.$invalid', layout='', layout-align='center end') Ok
Run Code Online (Sandbox Code Playgroud)
那么,我如何绑定整个对象,这 …
angularjs drop-down-menu angular-ngmodel angular-material pug
我在create-react-native-app中使用React Navigation。
我正在使用这样的TabNavigator组件(iPhone SE):
这TabNavigator是深蓝色的条,带有“作业1”,“聊天”,“文件”,“详细信息”。
我要自定义这些项目的文本。我想要非大写的文本(据我所知,这是用React Native Stylesheet不可能实现的),并为包裹在两行上的'Details'项目应用修复程序。
我在TabNavigator上浏览了React Navigation API,但是找不到答案。
如何为这些物品定型?
我已经使用Vue项目设置了非常基本的路由vue-router.
的router-link-active类名作为预期到有源根被施加.在下面的gif中,当/foo活动时会出现'Foo' 等.
但是,"Hello world"的链接也有router-link-activeclassname.
为什么它会被应用,我怎样才能确保它只在我/(localhost:8080)时才有效?
Codesandbox 示例:https ://codesandbox.io/s/react-table-pagination-not-working-xt4yw
我正在使用 react-table 包(版本 7.1.0)。
我有一张显示一些发票的表格。
我在初始加载时检索所有数据。然后我想对这些数据应用客户端分页,以便在任何时候只显示部分结果。
我的数据中有 139 个项目。
用户最初将看到 10 个结果并能够“显示更多”。目前这是在选择字段中实现的,它更新了pageSize
(在我的示例中,我使用的假数据不是来自任何端点。)
我usePagination以与此官方示例相同的方式使用钩子:https : //codesandbox.io/s/github/tannerlinsley/react-table/tree/master/examples/pagination?file=/src/App.js
useTable(
{
columns,
data,
initialState: { pageIndex: 0, pageSize: 10 }
},
useSortBy,
usePagination
);
Run Code Online (Sandbox Code Playgroud)
但是,必须有一些我遗漏的东西,因为尽管pageIndex并pageSize清楚地设置了分页,但并未应用分页。
"pageIndex": 0,
"pageSize": 10,
Run Code Online (Sandbox Code Playgroud)
一次显示所有结果,而不是仅显示 10 个。
此处未应用分页的原因是什么?
Codesandbox 示例:https ://codesandbox.io/s/react-table-pagination-not-working-xt4yw
javascript ×5
reactjs ×4
react-native ×3
ajax ×1
android ×1
angularjs ×1
asynchronous ×1
babeljs ×1
css ×1
debugging ×1
eclipse ×1
ecmascript-6 ×1
heroku ×1
java ×1
mobx ×1
node.js ×1
pagination ×1
preact ×1
pug ×1
react-table ×1
recursion ×1
settimeout ×1
state ×1
twilio ×1
vue-router ×1
vue.js ×1
webpack ×1