此警告消息发生在 iOS 8 和 9 设备以及模拟器上:
[警告:无法创建正在进行的修复标记文件]
它只在我第一次启动(首次安装)应用程序时显示一次。任何后续从 Xcode 启动此应用程序而不卸载它都不会显示此警告消息。
这对我的应用程序来说是正常的吗?这就是我对我的代码所做的:
AppDelegate.swift:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
return true
}
func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
return true
}
func application(application: UIApplication, shouldSaveApplicationState coder:NSCoder) -> Bool{
return true;
}
func application(application: UIApplication, shouldRestoreApplicationState coder:NSCoder) -> Bool{
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
Restoration …
努力获取滑块以更改 React 状态中“文本”的值。
一直报错:
“App.js:90 Uncaught TypeError: this.setState is not a function”尽管我尽了最大努力进行故障排除。
解决办法是什么?
class App extends Component {
constructor(props) {
super(props);
this.state = {list: [{x: "Before Pool", y:85000}, {x: "After Pool", y:82000}], text: 0, options: {bathrooms:'', bedrooms:'', sqft:''}};
}
componentDidMount() {
setTimeout(() => {
this.setState({list: [{x: "Before Pool", y:60000}, {x: "After Pool", y:30000}]});
console.log("testing", this.state.text);
}, 2000) ;
}
handleChange (event) {
console.log("from handle change", event);
this.setState({text : event });
}
render() {
return (
<div className="App">
<div>
<div style={wrapperStyle}> …Run Code Online (Sandbox Code Playgroud) 我有一个快速的问题。如何将状态传递给孩子的孩子?
如果父级有某种状态,那么在 ES6 中将这种状态传递给直接子级而不是直接子级的子级的最佳方式是什么。
我附上了布局的图像。
主应用程序 - 是由标题、侧边栏、内容区域组成的主要组件。
侧边栏由 - 侧边栏项目组成。
内容区包括 - 内容项。
主要问题
如何通过单击侧边栏项目更新内容区域中的组件?
请注意,此布局有 6 个组件(App、Header、Sidebar、Content Area、Sidebar Item、Content Item)。
图片
在我的Statistics州,有
const initialState = {
fetching: false,
channel: null,
dateFrom: {},
dateTo: {},
};
Run Code Online (Sandbox Code Playgroud)
dateFrom和dateTo是当用户点击日历中的开始日期和结束日期时的值。我rc-calendar用于显示和获取日期数据。
在我的GeneralReport组件中,我试图显示 start datedateFrom和 end date dateTo。所以我做了如下代码
render () {
const { stat } = this.props;
console.log(this.props.stat)
return (
<div className = "general_report">
<header className = "general_report_head">General Report</header>
<div className="report_dates">
From<span className="number">{this.props.stat.dateFrom}</span>
Run Code Online (Sandbox Code Playgroud)
到{this.props.stat.dateTo}
但它触发了错误,Objects are not valid as a React child (found: Thu Jan 12 2017 08:00:00 GMT+0800 (HKT)). If you meant to …
我正在从 JSON 数组中提取数据并从中创建对象,并在我使用for循环创建的对象中从数组中设置我需要的字符串值:
var gamesList = [];
gamesList = this.props.navigation.state.params.gamesList;
var gameIconList = [];
for(var i=0;i<3;i++){
var provider = gamesList[i].provider;
var gameId = gamesList[i].gameId.toString();
gameIconList.push(
<TouchableOpacity onPress={(provider,gameId) => this.launchGame(provider,gameId)}>
<ResponsiveImage source={{uri: gamesList[i].imageUrl}}
initWidth="200" initHeight="120" defaultSource={require('./splash-tile2.png')} />
</TouchableOpacity>
);
}
Run Code Online (Sandbox Code Playgroud)
这一切都发生在render()函数中,{gameIconList}将在return()函数中调用,如下所示:
return(
<ScrollView horizontal={true}>
{gameIconList}
</ScrollView>
);
Run Code Online (Sandbox Code Playgroud)
如您所见,我通过循环将字符串值设置到 onPress 函数调用中,当我单击图像中的图像时,TouchableOpacity我希望将设置的字符串值发送回上面的函数,即:
launchGame = (provider, gameId) => {
params = {
Provider: provider.nativeEvent.text,
Platform: this.state.Platform,
Environment: this.state.Environment,
GameId: gameId,
IsDemo: this.state.IsDemo
};
request …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的小组件(下面的代码被简化为所需的部分),在更新状态时表现得非常奇怪。
class Componenent extends React.Component {
constructor(props) {
super(props);
this.state = {showStuff: false};
}
render() {
return(
//Markup
{this.state.showStuff && (
<button onClick={() => this.setState({showStuff: false})} />
)}
// More Markup
);
}
}
Run Code Online (Sandbox Code Playgroud)
状态会在组件的其他地方更新,所以 prop 是true在单击按钮时。单击也会触发该setState函数(执行回调),但状态不会更新。
test: true状态添加另一个道具并将该属性更改false为单击按钮时也会触发showStuff道具更改为 false。所以当我进行奇怪的黑客攻击时它会起作用。class ElementAdd extends React.Component {
constructor(props) {
super(props);
this.defaultState = {
showElementWheel: false,
test: true
};
this.state = this.defaultState;
}
handleAddCardClick() {
if (this.props.onCardAdd) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试更新嵌套对象数组的状态,例如添加到 results[0].rooms[2] -> 循环房间 -> 并添加到每个对象 room.sunday.flag
array of results:
results: [
{ dates:
{ weekstart: 2018-08-26T04:00:00.000Z,
weekend: 2018-09-02T03:59:59.000Z,
daysofweek: [Array] },
need: [ '103', '204', '12', '234', '34', '555', '44' ],
backorder:
[ '100', '102', '150', '403', '344', '12', '3434', '23', '44' ],
_id: 5b7b139465c29145d8d69ac2,
iscurrent: true,
isnext: false,
rooms: [ [Object], [Object], [Object], [Object] ],
user: 5b61b782719613486cdda7ec,
__v: 9 },
{ dates:
{ weekstart: 2018-09-02T04:00:00.000Z,
weekend: 2018-09-09T03:59:59.000Z,
daysofweek: [Array] },
need: [ '12', '13', '55', '45' ],
backorder: …Run Code Online (Sandbox Code Playgroud) 我有一个需要放入状态的文件对象。我尝试这样做的原因是它被提供作为重新渲染 DOM 的可能解决方案,以便清除 FileReader() 中的值。这是当前线程源自的链接
我将在此处放置一个精简的 React 组件,以便您可以看到发生了什么。
import React, { Component } from "react";
class SearchPage extends Component {
constructor(props) {
super(props);
this.state = {
files: []
};
}
onChange(e) {
let files = e.target.files;
this.setState({ files: files[0] });
console.log(files[0]);
console.log(this.state.files)
}
render() {
return (
<div onSubmit={this.onFormSubmit}>
<input type="file" name="file" onChange={e => this.onChange(e)} />
</div>
);
}
}
export default SearchPage;
Run Code Online (Sandbox Code Playgroud)
console.log(files[0]} 给出了这样的东西:
File(1) {name: "1.txt", lastModified: 1549429792266, lastModifiedDate: Tue Feb 05 2019 22:09:52 GMT-0700 (Mountain …Run Code Online (Sandbox Code Playgroud) 我有一个Map具有几个状态的功能父组件,其中之一是layers,其值最初是从配置中设置的。
然后我有一个子LayerControl组件,它将地图的图层状态作为其道具。LayerControl 组件进行一些更改并将它们传递回 Map onLayerChange,然后使用 Map调用层 ( setLayers)的 setState 方法。
据我了解,这应该会触发我的 LayerControl 组件的重新渲染,但事实并非如此。我做错了什么?
export default function Map(){
const [viewport, setViewport] = useState(mapConfig.viewport);
const [style, setStyle] = useState(mapConfig.mapStyle);
const [layers, setLayers] = useState(mapConfig.layers);
function updateLayers(layers){
setLayers(layers); //why won't LayerControl re-render?
}
return(
<MapGL
zoom={[viewport.zoom]}
containerStyle={{
height: "100%",
width: "100%"
}}
style={style}>
<LayerControl
onLayerChange={layers => updateLayers(layers)}
layers={layers}
/>
<ZoomControl/>
<ScaleControl/>
</MapGL>
);
}
Run Code Online (Sandbox Code Playgroud) 我有这个代码,我正在 jsfiddle 上测试
onVote = (dir, index) => {
console.log(this.state)
const products = [...this.state.products]
products[index].votes = dir ? products[index].votes + 1 : products[index].votes - 1
console.log(this.state.products[index].votes)
// this.setState({products})
};
Run Code Online (Sandbox Code Playgroud)
https://jsfiddle.net/hkL3wug7/2/
但是,即使我没有设置状态,控制台日志也会显示每次单击加号和减号时状态都会发生变化。
const newState = [...state] // clone the array
newState[action.index].done = true
return newState
Run Code Online (Sandbox Code Playgroud)
据我所理解
(它不是另一个问题的重复,我不是在寻求一种有效的方法)
state ×10
reactjs ×9
javascript ×5
setstate ×2
arrays ×1
date ×1
ios ×1
layout ×1
mapbox-gl-js ×1
onchange ×1
prop ×1
react-native ×1
react-redux ×1
swift ×1