假设我有一个简单的组件,它可能会或可能不会呈现计数器。
React 中表达阻塞代码路径的最佳实践是什么?如果它返回null,[]或Fragment?
class App extends Component {
renderCounter() {
if (!this.props.shouldRenderCounter) {
// // which should I return?
// return;
// return null;
// return [];
// return <React.Fragment />;
}
return <Counter />;
}
render() {
return (
<div>
{this.renderCounter()}
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为null是最清楚的,但我可以想象如果返回函数周围的上下文需要一个组件,它会导致问题。[]而Fragment这两个看似细微的选项对我来说,除了片段是更容易一些阅读。有什么不同?
我正在尝试做的事情: 我正在尝试编写一个从Android麦克风中读取音频的程序(无需录制),并捕获一些使用服务的大小程度.现在我正在从我的活动向我的服务发送一个脉冲,以获得快速的声音读取,并检查振幅的Logcat打印输出作为我的音量.
我的问题: AudioRecord的read方法返回0.
我尝试过: 录制完整的音频而不是使用NullOutputStream并没有什么区别.一些早期版本在添加了一些微不足道的变化(如logcat调用)后随机开始工作,然后停止工作.
我的想法: 我原本以为可能是其他应用程序正在使用麦克风,但即使这是唯一值得注意的服务,它仍会返回0.
我的服务:
import org.apache.commons.io.output.NullOutputStream;
public class RecordingService extends Service {
public static final int SAMPLE_RATE = 16000;
private AudioRecord mRecorder;
private File mRecording;
private short[] mBuffer;
public static final NullOutputStream NULL_OUTPUT_STREAM = new NullOutputStream();
public double amplitude = 0.0;
public String TAG = "TAG";
public void onCreate() {
super.onCreate();
}
public int onStartCommand(Intent intent, int flags, int startId){
initRecorder();
mRecorder.startRecording();
mRecording = getFile("raw");
startBufferedWrite(mRecording, intent);
mRecorder.stop();
mRecorder.release();
stopSelf();
return START_STICKY;
}
private void …Run Code Online (Sandbox Code Playgroud)